【问题标题】:Changing mocha tests to jest tests将 mocha 测试更改为 jest 测试
【发布时间】:2017-11-07 23:20:29
【问题描述】:

我在将 mocha 测试更改为 jest 测试时遇到问题。

我有三个包含三个类的测试文件: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);
  });
});

it('should pass all', ...) 是必需的,因为 describe 中的所有内容都会立即运行,因此如果没有它,params 将作为 null 传递。这在 mocha 中有效,因为“它”可以嵌套,但显然这不是开玩笑的情况。

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

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

我在 jest 文档中找不到任何可以帮助我解决此问题的内容。

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

这是我在这里的第一个问题,所以请告诉我是否需要更多信息,因为我不习惯在这里写作。

【问题讨论】:

    标签: jestjs


    【解决方案1】:

    你尝试过 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 测试更改为 jest 测试。

    【讨论】:

    • 嗨,我会试试看它会产生什么,谢谢。我不知道你是否能看到谁投了反对票,但不是我。但即使这确实有效,我认为它只是部分回答了我的问题,因为我一直在寻找一些东西来解释为什么在这部分中开玩笑的行为与 mocha 不同。
    • 这是一个很好的答案,以前不知道 jest-codemods 并且现在将尝试使用它——只是赞成!
    猜你喜欢
    • 2019-01-29
    • 2020-03-22
    • 2018-12-01
    • 2020-05-29
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多