我正在做一个使用node的项目,我们试图实现我们功能的100%覆盖率。这是我们唯一没有测试过的函数,而且它在另一个函数中。
var userInput = "";
req.on("data", function(data){
userInput += data;
});
如何测试这个函数?我们尝试从另一个文件导出该函数,但没有成功。
我应该提到我们正在使用磁带作为测试模块。
您需要在请求时触发此"data"事件。这样这个回调就会被调用。
例如,假设您的测试中有req
,您可以这样做(这是Mocha):
req.trigger('data', 'sampleData');
expect(userInput).to.equal('sampleData');
req.emit('data', {sampleData: 'wrongOrRightSampleDataHere'})
应该这样做。当实例化http
或req
对象时,请确保实例化了一个新的对象,没有其他测试接收到此事件。
要更完整…
var assert = require('assert')
function test() {
var hasBeenCalledAtLeastOnce = false
var userInput = "";
// req must be defined somewhere though
req.on("data", function(data){
userInput += data;
if(hasBeenCalledAtLeastOnce) {
assert.equal(userInput, "HelloWorld", "userInput is in fact 'HelloWorld'")
}
hasBeenCalledAtLeastOnce = true
});
req.emit('data', "Hello")
req.emit('data', "World")
}
test()