我有一个我的角度组件的测试用例,它基本上测试是否调用了一个不应被调用的函数。
describe('...', () => {
...
it('should not call someFunction', function(done) {
let spy = spyOn(comp, 'someFunction');
comp.mainFunction();
fixture.detectChanges();
expect(spy).not.toHaveBeenCalled();
setTimeout(() => {
expect(comp.someVariable).toBe(false);
done();
),100);
}
mainFunction() {
...
if(condition) {
this.someFunction();
} else {
setTimeout( () => {
this.someVariable = false;
},100);
}
根据组件中的代码和规范中的测试用例,假设else
应该运行。这意味着在{100}之后不应该调用someFunction()
和someVariable = false
。当我运行此测试时,它有时会通过,有时会失败。测试失败的原因是什么? setTimeout
导致测试用例出现问题吗?我在测试失败时得到的错误是
预计是真假的
答案 0 :(得分:0)
尝试增加测试中的超时持续时间 - 两者都是100毫秒,但setTimeout并不准确,因此有时您的测试首先要解决,但并非总是如此。