【发布时间】:2026-01-27 18:50:01
【问题描述】:
我有一个 JavaScript 项目,我想观察 TDD 方法。我为此选择了 karma 框架和 requirejs 库,并按照 karma 文档here 中演示的示例进行操作。
有一个单元测试文件的示例,即:
define(['app', 'jquery', 'underscore'], function(App, $, _) {
describe('just checking', function() {
it('works for app', function() {
var el = $('<div></div>');
var app = new App(el);
app.render();
expect(el.text()).toEqual('require.js up and running');
});
it('works for underscore', function() {
// just checking that _ works
expect(_.size([1,2,3])).toEqual(3);
});
});
});
这种方法的主要问题是没有办法为每个测试清除 App 模块。因此,如果在一个it 调用中应用程序发生了一些变化(如闭包变量更改等),那么它们可能会影响其他it 调用。
有人可以就此提出建议吗?这些都是如此流行的工具,我不敢相信没有人遇到过这种情况。
所以,为了概括一下这个问题,我想为这些更具体的问题寻求答案:
- 有什么方法可以“重置”(清除)requirejs 中的模块吗? (其实我想没有这样的办法,除了重新加载所有模块一次)
- 是否有更好的方法来运行 karma 和 requirejs,以便模块上没有其他测试(
it函数调用)的任何残留(副作用)?
【问题讨论】:
标签: javascript unit-testing requirejs karma-runner