met*_*ard 5 jasmine karma-jasmine angular-cli angular
这是一个普遍的问题。
当使用Angular-cli架设组件时,它会自行创建第一个测试。
看起来像这样:
it('should create', () => {
expect(component).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
它如何检查它是否真实且未定义?有什么区别?
提前致谢 :)
真实的源代码:
getJasmineRequireObj().toBeTruthy = function() {
function toBeTruthy() {
return {
compare: function(actual) {
return {
pass: !!actual
};
}
};
}
return toBeTruthy;
};
Run Code Online (Sandbox Code Playgroud)
定义的源代码:
getJasmineRequireObj().toBeDefined = function() {
function toBeDefined() {
return {
compare: function(actual) {
return {
pass: (void 0 !== actual)
};
}
};
}
Run Code Online (Sandbox Code Playgroud)
因此,这是!!actual和之间的比较void 0 !== actual。
void 0与undefinedAFAIK 相同,对我来说虽然实际上是相同的,但它toBeDefined是一种在某些边缘情况下检查定义值的更安全的方法。
例如:
expect(0).toBeTruthy() 将评估为假/失败
expect(0).toBeDefined() 将评估为真/成功
评论中提到的@trichetriche案例更多。
但是,对于您而言,这不会有任何不同。
| 归档时间: |
|
| 查看次数: |
3882 次 |
| 最近记录: |