使用Jest进行JavaScript单元测试-如何在浏览器中运行脚本?

使用Jest进行JavaScript单元测试-如何在浏览器中运行脚本?,javascript,unit-testing,testing,jestjs,Javascript,Unit Testing,Testing,Jestjs,我使用Jest对我的JavaScript代码进行单元测试。或者至少我真的想开玩笑 问题是Jest需要我使用module.exports,以便在测试文件中使用函数。这意味着我不能在浏览器中使用JavaScript 简单的Jest测试如下所示: // divide.js function divide(a, b) { return a / b; } module.exports = divide; 而且效果很好。我在CLI中运行test,一切都很好 我意识到Jest在编写时考虑了Rea

我使用Jest对我的JavaScript代码进行单元测试。或者至少我真的想开玩笑

问题是Jest需要我使用
module.exports
,以便在测试文件中使用函数。这意味着我不能在浏览器中使用JavaScript

简单的Jest测试如下所示:

// divide.js
function divide(a, b) {

  return a / b;

}

module.exports = divide;

而且效果很好。我在CLI中运行
test
,一切都很好

我意识到Jest在编写时考虑了React(因此每个Jest指南都使用React),但它似乎对使用(普通的)JavaScript进行测试很有意义

我意识到
module.exports
require
是特定于Node.js的。但是我不知道如何处理它们,以便我可以使用browserrendered代码中的函数。3

到目前为止,我一直在通过注释掉
module.exports
来解决这个问题,这肯定不是一个可行的方法

所以我的问题是:如何在测试和浏览器中使用divide.js

在这里,我能想到很多方法: -将测试套件切换到其他内容
-找出我需要什么工具或设置来从包含
模块的文件中创建main.js之类的东西。以某种方式导出
,以便它可以在浏览器中使用

您真的希望看到您的测试在真实的浏览器中运行,还是可以在服务器上的无头浏览器中运行它们,并使用无法看到渲染的断言?好的。我深陷其中。如果我误解了你的问题,请提前道歉。我非常喜欢在CLI中键入“test”,然后在那里查看测试的输出。我不需要在浏览器中运行测试本身。这有道理吗?我想我明白了。您想在服务器上的测试框架中对“浏览器代码”进行单元测试,而不让module.exports污染您的浏览器代码?您当前如何将divide.js文件放入客户端应用程序的其余部分?是的。确切地说:DDo您确实希望看到您的测试在真实的浏览器中运行,或者您是否可以在服务器上的无头浏览器中运行测试,并在无法看到渲染的情况下使用断言来满足您的测试?好的。我深陷其中。如果我误解了你的问题,请提前道歉。我非常喜欢在CLI中键入“test”,然后在那里查看测试的输出。我不需要在浏览器中运行测试本身。这有道理吗?我想我明白了。您想在服务器上的测试框架中对“浏览器代码”进行单元测试,而不让module.exports污染您的浏览器代码?您当前如何将divide.js文件放入客户端应用程序的其余部分?是的。确切地说:D
// divide.test.js
const divide = require('./divide');

test('divides 10 by 2 equal to 5', () => {

  expect(divide(10, 2)).toBe(5);

});