【问题标题】:Jest: Testing generator function which yields another generator function笑话:测试生成器函数,它产生另一个生成器函数
【发布时间】:2017-12-19 23:00:00
【问题描述】:

我有一个看起来像这样的函数

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); });

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

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

【问题讨论】:

    标签: reactjs unit-testing jestjs


    【解决方案1】:

    2021 年更新:Jest 现在支持开箱即用的生成器函数。

    您可以使用以下两种方法之一使用 Jest 测试您的生成器功能:

    方法一:

    直接测试生成器的下一个值:

    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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-21
    • 2021-12-28
    • 2012-07-15
    • 2016-01-09
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多