我正在与 jasmine 和 Supertest 合作开发一个现有项目。
let checkResult = require('./check-result');
it('should do something', function(done){
request
.post('/route')
.expect(results => {
expect(results).toBeTruthy();
})
.end(checkResult(done));
});
当我 console.log(done)
时,我得到以下输出:{ [Function] failed: [Function] }
下面是我们的 checkResult 模块。
//check-result
module.exports = function checkResult(done){
return function(seeIfThereIsError){
if(seeIfThereIsError){
done.fail(seeIfThereIsError)
} else {
done()
}
}
};
当发生错误时,if(seeIfThereIsError)
block 将执行。
我有两个问题:
- 将
done
传递到checkResult
时,如何填充checkResult
的seeIfThereIsError
参数中返回的函数?- 签名
{ [Function] failed: [Function] }
是如何创建的?
- 签名
简而言之,我如何从头开始创建一个任意示例来理解所有工作部分(语法)如何组合在一起?
最佳答案
When passing
done
intocheckResult
how does the returned function incheckResult
'sseeIfThereIsError
argument get populated?
该函数被传递给 end
并由其调用。 IE。 end
将向函数传递一个值。最简单的形式如下:
request.end = function(callback) {
callback(false);
};
How is the signature
{ [Function] fail: [Function] }
get created?
console.log 如何表示函数尚未标准化。此输出只是告诉您该值是一个具有自定义属性 fail
的函数对象,它也是一个函数。
如果你想自己创造这样的值(value),可以这样做:
function done() {}
done.fail = function() {};
console.log(done) 是否为您提供所看到的输出取决于浏览器和可能的其他实现特定启发法。
关于javascript - JavaScript 如何知道执行失败函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40935543/