Tom*_*Tom 7 javascript unit-testing headless qunit phantomjs
我知道还有很多其他类似的问题,但答案并没有解决这个问题.
我在我的网站上使用了一个JavaScript文件,该文件使用HTML 5 Web Audio并希望对其进行单元测试.
我已经看过将Qunit与PhantomJS一起使用,在你说出任何我知道 Phantom不支持它之前(http://phantomjs.org/supported-web-standards.html)但是我想知道是否有办法解决这个?
在浏览器中使用QUnit进行测试可以按预期工作,但我不想每次都使用浏览器对其进行测试,我希望它在服务器上自动化.
其中一个测试失败的示例:
QUnit.test("isPlaying", function(assert){
// true case
My.Sound.play("background");
assert.ok(My.Sound.isPlaying("background"), "The background audio is playing");
// false case
My.Sound.pause("background");
assert.ok(!My.Sound.isPlaying("background"), "The background audio is not playing");
});
Run Code Online (Sandbox Code Playgroud)
正如 @jakerella 已经指出的那样,测试第三方 api 是没有意义的。只需专注于您的功能即可。在这种情况下,您应该测试每当您想要播放/暂停声音时,为您的声音对象(播放/暂停)调用正确的 api 方法,这些方法应该是原始实现的存根。
QUnit.test("play button should play sound when clicked", (assert) => {
const button = someButton; //...get your button / play trigger here
const playStub = stub(My.Sound, 'play');
//trigger button click
assert.ok(playStub.called);
});
Run Code Online (Sandbox Code Playgroud)
请在此处查看QUnit 的存根功能。
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |