我想用Node和Jest对一个普通的旧JavaScript客户端代码库(不使用HTML-DOM或类似的东西)进行单元测试。
如果启动Node和.load foo.js
,它会加载我想要测试的代码。我可以调用函数等等。
但是单元测试是很好的,所以我决定npm init
一些包,并使用Jest作为单元测试框架。
如何加载文件,使foo.test.js
中的测试代码可以执行与Node REPL相同的调用?require('./foo')
不工作,因为它不是一个CommonJS模块。同样的答案暗示require('fs')
,require('vm')
和东西在我的情况下也不工作。因为它是客户端(浏览器)的代码库,我不想让它成为一个模块。它只是一个脚本。
如果我将测试代码粘贴到foo.test.js
中,它就可以工作。所以,我的结论是,我必须将测试代码作为文件操作附加到被测试代码中。有更好的方法吗?
//const cu = require('./foo');
// this is the content of foo.js, pasted into the foo.test.js.
var std = {
nothingP : function (x) { return x === undefined || x == null; }
};
// true foo.test.js content
test('std.nothingP', () => {
expect(std.nothingP(null)).toBe(true);
expect(std.nothingP(undefined)).toBe(true);
expect(std.nothingP(42)).toBe(false);
expect(std.nothingP("Hello World")).toBe(false);
expect(std.nothingP({})).toBe(false);
expect(std.nothingP([])).toBe(false);
});
字符串
1条答案
按热度按时间jtw3ybtb1#
我创建了一个
Makefile
,使用unix cat命令从源文件foo.js
和包含测试用例foo-tests.js
的文件中构造foo.test.js
。现在我可以
make
,然后npm test
。字符串
在命令行中,你只需要记住调用
make
:型
瞧,测试用例知道源代码。
“裸”函数,即那些不在命名空间对象内的函数,似乎会让Jest感到困惑。但幸运的是,在我的例子中,我的源代码中的所有内容都是“命名空间”的。