Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无头JavaScript测试HTML5音频/视频_Javascript_Unit Testing_Phantomjs_Qunit_Headless - Fatal编程技术网

无头JavaScript测试HTML5音频/视频

无头JavaScript测试HTML5音频/视频,javascript,unit-testing,phantomjs,qunit,headless,Javascript,Unit Testing,Phantomjs,Qunit,Headless,我知道还有很多其他类似的问题,但是答案并不能解决这个问题 我的网站上使用了一个JavaScript文件,该文件使用HTML5Web音频,并希望对其进行单元测试 我已经研究过在PhantomJS中使用QUnit,在你说之前,我知道PhantomJS不支持它(),但是我想知道是否有办法解决这个问题 在浏览器中使用QUnit进行测试正如您所期望的那样,但我不想每次都使用浏览器进行测试,我希望它在服务器上实现自动化 失败测试之一的示例: QUnit.test("isPlaying", function(

我知道还有很多其他类似的问题,但是答案并不能解决这个问题

我的网站上使用了一个JavaScript文件,该文件使用HTML5Web音频,并希望对其进行单元测试

我已经研究过在PhantomJS中使用QUnit,在你说之前,我知道PhantomJS不支持它(),但是我想知道是否有办法解决这个问题

在浏览器中使用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");
});

正如@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);
});

看看QUnit的存根功能。

我不知道QUnit是否使用SlimerJS运行,但如果使用SlimerJS+xvfBy,您可以使用SlimerJS+xvfBy实现这一点。您可以随时模拟整个Web音频API。。。但似乎有点过分了。您在这里测试的是HTML5网络音频作品,而不是您自己的代码。与SlimerJS和xvfb的自动测试相关: