0
我有一个测试用例,用于我的角度组件,它基本上测试是否调用了不应该调用的函数。针对Angular 4应用程序的茉莉花单元测试问题
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);
}
根据该组件的代码和测试用例在spec,让我们假设else
应该运行。这意味着someFunction()
不应该被称为和someVariable = false
100ms后。当我运行这个测试时,它有时会通过,有时会失败。什么可能是测试失败的原因? setTimeout
是否在测试用例中引起问题?我得到在测试失败时的错误是
预计真正成为falsy
尝试增加测试中的超时时间 - 两者均为100ms,但setTimeout不准确,所以有时您的测试可能会首先解决,但并非总是如此。 –
@DuncanThacker完美的工作。你可以请添加这个答案,我可以接受它吗? – user3344978