Spe*_*age 10 javascript tdd requirejs
我希望将RequireJS用于我的下一个大型JS项目,但是我很难确定如何在无头测试环境中测试它.我是RequireJS和测试驱动的编码方法的新手,所以任何对诺布友好的东西都会很棒.
您可以使用r.js从命令行测试RequireJS模块,以在Node中运行脚本.
然后,您可以使用Node模块(如assert)为自己创建测试套件.
这是一个非常简单的例子:
scripts/simple.js:
define({ name: 'Really simple module' });
Run Code Online (Sandbox Code Playgroud)
tests/test_simple.js:
require({ baseUrl: 'scripts' }, ['assert', 'simple'], function(assert, simple) {
var test = function(callback) {
var msg;
try {
callback();
} catch (e) {
msg = 'Failed: expected "' + e.expected +
'" but got "' + e.actual + '" instead.';
}
if (!msg) {
msg = 'Passed';
}
console.log(msg);
};
// This will pass
test(function() {
assert.equal(simple.name, 'Really simple module');
});
// This will fail
test(function() {
assert.equal(simple.name, 'Foo');
});
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以从项目的顶级目录运行测试:
node path/to/r.js test/test_simple.js
Run Code Online (Sandbox Code Playgroud)
你可能做得更好.断言模块只是您自己制作测试套件所需的基础.如果您不想自己动手,可以尝试使用CommonJS Test Runner之类的软件包,但请务必先阅读r.js文档.
好的,这是我的想法。您应该只为自己的代码编写测试,而不是为第三方代码编写测试,因此无需测试 RequireJS 作为库是否正常工作。(他们有自己的测试,你应该相信。)
因此,您应该能够在测试中假设 RequireJS 正在工作。就像您假设parseInt有效、setTimeout有效、Math.min有效:这些开发人员有自己的测试,您不需要编写更多内容。
如果它不起作用(不太可能),或者如果您错误地使用它(可能性更大),那么您的测试应该会灾难性地失败:例如,您最终将调用不存在的对象上的方法。
考虑到这一点,您应该对各个 RequireJS 模块进行单元测试。为此,每个测试装置应该包含在require其被测系统模块的模块中,或者测试应该是异步的,并且作为测试的一部分,它们应该是require被测系统模块。再次,假设您返回了正确的模块:如果没有,即如果您滥用 RequireJS,测试将灾难性地失败。
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |