Unit testing 浏览器中的单元测试
我更喜欢在浏览器中进行单元测试,因为我喜欢像mocha这样的测试框架 是否有一种在浏览器中运行附加sdk单元测试的简单方法 编辑:我不想做回归测试。例如,使用mocha,我可以创建如下HTML页面:Unit testing 浏览器中的单元测试,unit-testing,firefox-addon-sdk,commonjs,Unit Testing,Firefox Addon Sdk,Commonjs,我更喜欢在浏览器中进行单元测试,因为我喜欢像mocha这样的测试框架 是否有一种在浏览器中运行附加sdk单元测试的简单方法 编辑:我不想做回归测试。例如,使用mocha,我可以创建如下HTML页面: <head> <title>Tests</title> <link rel="stylesheet" href="mocha.css" /> </head> <body> <script src="mocha.
<head>
<title>Tests</title>
<link rel="stylesheet" href="mocha.css" />
</head>
<body>
<script src="mocha.js"></script>
<script src="chai.js"></script>
<script src="main-content.js"></script>
<script>mocha.setup('bdd')</script>
<script src="main-content-test.js"></script>
<script>
mocha.run();
</script>
</body>
require('sdk/page-mod').PageMod({
include: require('sdk/self').data.url('testpage.html'),
contentScript: 'unsafeWindow.addon={on: self.port.on, emit: self.port.emit}',
contentScriptWhen: 'start',
onAttach: function(worker) {
worker.port.on('test-1', function() {
worker.port.emit('test-1', {})
});
// ...
}
});
测验
摩卡咖啡设置(“bdd”)
mocha.run();
输出看起来像我上面链接的图片。这就是我所说的浏览器中的单元测试
编辑2:我正在尝试单元测试我的模块(使用require(“sdk/test”),而不是我的内容脚本。没有一种预构建的方法来实现这一点,它需要一点jerry装配 除了页面之外,您还需要一个页面模组,如下所示:
<head>
<title>Tests</title>
<link rel="stylesheet" href="mocha.css" />
</head>
<body>
<script src="mocha.js"></script>
<script src="chai.js"></script>
<script src="main-content.js"></script>
<script>mocha.setup('bdd')</script>
<script src="main-content-test.js"></script>
<script>
mocha.run();
</script>
</body>
require('sdk/page-mod').PageMod({
include: require('sdk/self').data.url('testpage.html'),
contentScript: 'unsafeWindow.addon={on: self.port.on, emit: self.port.emit}',
contentScriptWhen: 'start',
onAttach: function(worker) {
worker.port.on('test-1', function() {
worker.port.emit('test-1', {})
});
// ...
}
});
它将侦听测试事件、执行测试并将结果发回。然后您的测试页测试代码将侦听测试结果,如下所示:
function test() {
addon.on('test-1', function(results) {
// loop through results and pass/fail
});
addon.emit('test-1');
}
几乎从定义上讲,浏览器测试不是单元测试。您可能指的是回归测试,在回归测试中,您可以收集一组测试并在一个框架中自动运行它们。您知道Selenium吗?@BobDalgleish前端Javascript通常在浏览器中进行单元测试。请参阅编辑。谢谢您的回答。如果我理解上述正确性,请参阅首先,它是用于测试内容脚本的。但是,我正在尝试以一种类似于mocha框架外观的方式对我的模块进行单元测试(使用
require(“sdk/test”)
)。我包含HTML页面只是为了表明在浏览器中可以进行单元测试。如果我有误解,请告诉我。