我已经开发了Node.js模块,并且正在使用Jasmine为其编写单元测试。当将console.log
参数设置为true时,模块在执行时使用verbose
打印一些信息。
假设模块看起来像这样:
foo.js
function foo(arg1, verbose){
var output = "Hello " + arg1;
if(verbose)console.log("Returning %s", output);
return output;
}
module.exports = foo;
假设我的测试如下:
foo-spec.js
const foo = require("path/to/foo")
describe("Foo suite", () => {
it( "Expect foo to greet", () => {
expect(foo("World", true)).toBe("Hello World");
});
});
我通过在终端中输入jasmine
来运行测试:
$ jasmine
一切正常,但我希望看到详细的输出。
$ jasmine
Returning Hello World
有没有办法让茉莉花做到这一点?
答案 0 :(得分:1)
好的,我已经找到一种解决方法。暗中监视console.log
进行了修补。
foo-spec.js
const foo = require("path/to/foo")
describe("Foo suite", () => {
//This makes the log visible again from the command line.
spyOn(console, 'log').and.callThrough();
it( "Expect foo to greet", () => {
expect(foo("World", true)).toBe("Hello World");
});
});
不知道为什么,但是spyOn
使日志再次可见。即使我实际上并没有做任何事情,除了调用callThrough
之外。我最好的猜测是,这样做实际上是从茉莉花工艺中调用console.log
。