【发布时间】:2018-01-25 20:38:09
【问题描述】:
我有一个不寻常的问题,但我没有找到任何解决方案,我已经尝试了很长时间。我创建了一个名为 delay 的函数,它基本上创建了一个新的 Promise,它会在给定的时间后自行解决。这个函数的目的是能够在一系列 Promise 中造成延迟。有点像这样:
const delay = ms => new Promise((resolve, reject) => {
setTimeout(resolve, ms);
});
let test = '';
const func = () => {
delay(1000).then(() => {
test = 'kek';
});
};
describe('unit tests', () => {
it('test function func', () => {
// Act
func();
// Assert
expect(test).toEqual('kek');
});
});
问题在于测试,我在这个例子中提供的单元测试会失败,因为只有在 1000 毫秒延迟之后,变量 test 才被设置为 kek。
我已经尝试过通常的解决方案,比如在单元测试中设置一个 setTimeout,并且在断言之前也尝试过 jasmine.clock().tick(1001) 但我无法让它工作。
有什么想法吗?
【问题讨论】:
标签: javascript unit-testing ecmascript-6 promise karma-jasmine