我正在开发一个使用节点的项目,我们正在尝试实现 100% 的功能覆盖。这是我们唯一没有测试过的函数,它在另一个函数中。
var userInput = "";
req.on("data", function(data){
userInput += data;
});
你如何去测试这个功能?我们尝试从另一个文件中导出函数,但没有成功。
我应该提到我们正在使用磁带作为测试模块。
我正在开发一个使用节点的项目,我们正在尝试实现 100% 的功能覆盖。这是我们唯一没有测试过的函数,它在另一个函数中。
var userInput = "";
req.on("data", function(data){
userInput += data;
});
你如何去测试这个功能?我们尝试从另一个文件中导出函数,但没有成功。
我应该提到我们正在使用磁带作为测试模块。
您需要在 req 上触发此“数据”事件。这样这个回调就会被调用。
例如,假设你有req
你的测试,你可以做这样的事情(这是摩卡):
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()