gpt4 book ai didi

javascript - 配置一个从单元测试中的延迟返回 promise 的 stub 工厂?

转载 作者:行者123 更新时间:2023-11-30 21:01:54 25 4
gpt4 key购买 nike

我正在编写一个 AngularJs 单元测试,我需要在其中 stub 一个在调用时返回 promise 的工厂。稍后我将通过使用本地范围的延迟对象在我的测试中手动解决 promise 。

我正在努力

  let currentUser
beforeEach(module(($q, $provide) => {
currentUser = $q.defer()
$provide.factory('gettingCurrentUser', () => currentUser.promise)
}))

但这不会起作用,因为它似乎不能将 $q 注入(inject)到 module block 中。当然,如果我将它更改为 inject block ,$provide 将不再是可注入(inject)的!

我可以通过十几种不同的方式破解这个问题,但它似乎太简单了,无法成为需要破解的边缘案例。

执行此操作的“正确的 AngularJs”方法是什么?

最佳答案

执行此操作的一个简单方法是返回局部变量,该变量将分配给另一个 block 中的适当 promise (但在实例化此服务之前)。

  let currentUserPromise;

beforeEach(module(($provide) => {
$provide.factory('gettingCurrentUser', () => currentUserPromise)
}));

beforeEach(inject(($q) => {
currentUserPromise = $q.resolve(...);
}));

it(inject((serviceThatDependsOnGettingCurrentUser) => {
...
}));

关于javascript - 配置一个从单元测试中的延迟返回 promise 的 stub 工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47061644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com