Sha*_*tin 5 javascript promise jasmine typescript
我们正在测试对返回a的函数的调用Promise<void>.我们怎么能等到承诺结算并then做一些测试?
then()关闭函数的标准方法不起作用,因为a Promise<void>不可行.所以我们采取了以下措施,但有效但似乎并不理想.
初步方法
it("it does something...", function (done) {
function wrappedPromise() {
functionThatReturnsPromiseVoid(someArg);
return new Promise((resolve) => resolve());
}
wrappedPromise()
.then(() => {
expect(someVar).toBe("someValue");
done();
});
});
Run Code Online (Sandbox Code Playgroud)
后续方法
let wrapVoidPromise = (wrapped): Promise<any> => new Promise((resolve) => {
wrapped();
resolve();
});
it("it does something...", function (done) {
wrapVoidPromise(() => functionThatReturnsPromiseVoid(someArg))
.then(() => {
expect(someVar).toBe("someValue");
done();
});
});
Run Code Online (Sandbox Code Playgroud)
我们怎么能做到这一点而不需要包装不可饶恕的承诺?
route.navigationStrategy(instruction) // returns Promise<void>
Run Code Online (Sandbox Code Playgroud)
这是函数的GitHub链接.实现被隐藏在源内部的aurelia-router中.这是它的界面:
navigationStrategy?: (instruction: NavigationInstruction) => Promise<void>|void;
Run Code Online (Sandbox Code Playgroud)
小智 0
您可以尝试更改wrapUnchainedPromise,如下所示:
function wrapUnchainedPromise(): Promise<any> {
return route.navigationStrategy(instruction);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |