gpt4 book ai didi

reactjs - Jest : Testing generator function which yields another generator function

转载 作者:行者123 更新时间:2023-12-03 19:49:09 25 4
gpt4 key购买 nike

我有一个看起来像这样的功能

export function* login(user, page) {
yield checkIp();
return yield loginAuth(user, page);
}

我正在尝试从单元测试中测试登录生成器,如下所示
it('login test', () => {
const user = { email:"test@test.com", password:"1234" }
const generator = login (user, {});
generator.next();
expect(generator.return().done).toEqual(true); });

这是正确的方法吗?同样在覆盖范围内,我无法覆盖登录生成器函数的返回语句。
任何帮助将非常感激。

这也是我第一次在这里发帖,如果我没有正确遵守规则,请原谅我。

最佳答案

2021 年更新:Jest 现在支持开箱即用的生成器函数。
您可以使用以下两种方法之一使用 Jest 测试生成器函数:
方法一:
直接测试generator的下一个值:

describe('generator test', () => {
it('should call generator function', function() {
const user = { email:"test@test.com", password:"1234" };
const generator = login(user, {});

expect(generator.next().value).toBe(SOME_VALUE_HERE));
});
});
方法二:
您可以使用 co将生成器包装在 Jest 支持的 promise 中的包。
import co from 'co';

describe('generator test', () => {
it('should call generator function', co.wrap(function *() {
const user = { email:"test@test.com", password:"1234" };
const generator = login(user, {});

expect(generator).toBe(SOME_VALUE_HERE));
}));
});
有关其他解决方法和在 Jest 中跟踪功能的详细对话,请访问 Generator support in Jest

关于reactjs - Jest : Testing generator function which yields another generator function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47896431/

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