Jest:测试生成器函数,它产生另一个生成器函数

问题描述 投票:0回答:1

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

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

我试图从单元测试中测试登录生成器,如下所示

it('login test', () => {
  const user = { email:"[email protected]", password:"1234" }
 const generator = login (user, {});
 generator.next();
 expect(generator.return().done).toEqual(true); });

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

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

reactjs unit-testing jestjs
1个回答
3
投票

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

方法1:

直接测试发电机的下一个值:

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

      expect(generator.next().value).toBe(SOME_VALUE_HERE));
  });
});

方法2:

您可以使用co包,它将您的生成器包装在Jest中支持的promise中。

import co from 'co';

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

      expect(generator).toBe(SOME_VALUE_HERE));
  }));
});

有关其他解决方法的详细对话以及跟踪Jest中的功能,请访问Generator support in Jest

© www.soinside.com 2019 - 2024. All rights reserved.