将mocha测试更改为jest测试

时间:2017-06-06 19:40:13

标签: jestjs

我无法将我的摩卡测试更改为开玩笑测试。

我有三个测试文件有三个类:FirstTestGroup,SecondTestGroup和ThirdTestGroup,每个都有一个静态执行方法,包含一些测试,如下所示:

class FirstTestGroup {
  execute(params) {
    describe('some tests', function tests() {
      it('one test', () => {
        // uses params
      });
      ...
    });
    ...
  }
}

每个执行方法都使用相同的参数。这些参数在调用之前在异步中创建,如下图所示。

describe('My Tests', function testSuite() {
  let params;

  before('param creation', async function asyncFunc() {
    // creates params asynchronously
  });

  it('should pass all', () => {
    FirstTestGroup.execute(params);
    SecondTestGroup.execute(params);
    ThirdTestGroup.execute(params);
  });
});

它('应该通过所有',...)是必需的,因为描述中的所有内容都是立即运行的,所以params将在没有它的情况下传递为null。这适用于摩卡,因为“它”可以嵌套,但显然这不是开玩笑的情况。

我可以在运行测试组之前每次调用beforeAll(相当于之前的jest),但我不想这样做,因为这似乎效率低下。

在定义describe('My Tests',...)之前,我也可以将代码放在before调用中。这似乎是错误的,因为这应该只是描述的一部分。

我在jest文档中找不到任何可以帮助我的内容。

我做错了吗?有没有办法用jest实现这一点,即使我必须重组测试?但我想将测试保存在不同的文件中。

这是我的第一个问题,所以请告诉我是否需要更多信息,因为我这里没有用过写作。

1 个答案:

答案 0 :(得分:2)

你尝试过Jest-Codemods吗?

Jest-Codemods允许您将Mocha,AVA,Jasmine测试转换为等效的Jest测试。它还可以帮助您迁移断言库,例如Chai和Expect。

你这样做的方式:

使用npm install -g jest-codemods

安装jest-codemods

转到您的项目并执行jest-codemods

会问你Which test library would you like to migrate from?

使用箭头键选择Mocha(如您想从Mocha迁移)

接下来,它会问你Will you be using Jest on Node.js as your test runner?

选择Yes, use the globals provided by Jest (recommended)

最后,您需要提供您正在从Mocha迁移到Jest的文件名。

你完成了!

它会自动将您的代码从Mocha迁移到Jest。无需触摸代码。这是Jest最强大的功能之一,它可以节省您的时间,您无需担心将mocha测试更改为开玩笑测试。