这是一个普遍的问题。
当使用Angular-cli构建组件时,它会自行创建第一个测试。
它看起来像这样:
it('should create', () => {
expect(component).toBeTruthy();
});
如何检查它的真实性和未定义?有什么区别?
提前致谢:)
答案 0 :(得分:5)
真实的源代码:
getJasmineRequireObj().toBeTruthy = function() {
function toBeTruthy() {
return {
compare: function(actual) {
return {
pass: !!actual
};
}
};
}
return toBeTruthy;
};
定义的源代码:
getJasmineRequireObj().toBeDefined = function() {
function toBeDefined() {
return {
compare: function(actual) {
return {
pass: (void 0 !== actual)
};
}
};
}
因此,它是!!actual
和void 0 !== actual
之间的比较。
void 0
与undefined
AFAIK相同,虽然它们实际上是相同的,toBeDefined
是检查某些边缘情况下定义值的更安全的方法。
例如:
expect(0).toBeTruthy()
将评估为false / fail
expect(0).toBeDefined()
将评估为真/成功
评论中提及的@trichetriche中有更多这些案例。
但是对于你的情况,它不会有所作为。