我正在开发一个使用节点的项目,我们正努力实现100%的功能覆盖。这是我们没有测试过的唯一功能,它在另一个功能中。
var userInput = "";
req.on("data", function(data){
userInput += data;
});
你如何测试这个功能?我们尝试从另一个文件导出函数,但没有运气。
我应该提到我们正在使用磁带作为测试模块。
答案 0 :(得分:0)
您需要在req上触发此“数据”事件。这样就可以调用这个回调。
例如,假设您的测试中有req
,您可以执行类似的操作(这是Mocha):
req.trigger('data', 'sampleData');
expect(userInput).to.equal('sampleData');
答案 1 :(得分:0)
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()