2
我想知道是否可以在測試中使用async/await做這樣的事情。異步/等待嘲諷
隨着定期的承諾,我可以模擬出這樣的單元測試承諾。
class Foo {
fn() {
this.someService.someFn().then((data) => this.data = data);
}
}
describe("something", function() {
beforeEach(function() {
this.instance = new Foo();
// Can this part be mocked out with the same idea, when someService.someFn is async fn
this.instance.someService = {
someFn: function() {
return {
then: function(cb) {
cb("fake data");
}
}
}
}
this.instance.fn();
});
it("a test", function() {
expect(this.instance.data).toBe("fake data");
});
});
(如果我覆蓋的諾言,我沒有處理沖洗或類似的東西)。 但是現在,當FN()將改變這一
class Foo {
async fn() {
try {
this.data = await this.someService.somefn();
} catch() {
}
}
}
覆寫我在之前做過的每一件事情都不會奏效。 所以我在這裏的問題是...我可以做的事情就像我承諾用async/await代碼風格覆蓋所做的一樣。
這裏的想法是,我想模擬出外部依賴項,我可以使用單元測試的函數,比如「someService」。在特定的單元測試中,我期望一些Service.someFn能夠正常工作,並且我可以嘲笑它的響應。其他測試檢查「someFn」的有效性。