所以这个问题看起来真的很愚蠢,但是我一直在搜寻,却没有找到答案。
我正在尝试对未使用React或任何其他框架的自定义javascript项目进行单元测试的Jest框架。我的项目结构目前看起来像这样:
在main.js里面定义了Card类。我怀疑该文件是否存在任何问题,因为我已经在浏览器中很好地运行了该文件。
"use strict";
class Card
{
...
}
到目前为止,我写的一个测试只是为了看看它是否有效:
require('../js/main.js');
test("stuff", () => {
let card = new Card(1, 1);
});
当我尝试运行测试时:
yarn test
但是我得到的只是:
ReferenceError: Card is not defined
2 |
3 | test("stuff", () => {
> 4 | let card = new Card(1, 1);
| ^
5 | });
at Object.<anonymous>.test (__tests__/card.test.js:4:13)
似乎正在加载main.js,因为如果在其中添加console.log(),则在运行测试时它会得到输出。那么为什么抱怨没有定义Card?
答案 0 :(得分:0)
您必须将Cards导出到main.js文件中,才能在其他文件中对其进行访问
// main.js
module.exports = { Card }
然后在测试文件中要求它
const { Card } = require('../js/main.js');
答案 1 :(得分:0)
尽管使用了ES6模块,但是我得到了一些似乎可行的东西。
"use strict";
export class Card
{
...
}
yarn add --dev @babel/core @babel/cli @babel/preset-env
{
"presets": ["@babel/preset-env"]
}
const { Card } = require('../js/models.js');
test("stuff", () => {
let card = new Card(1, 1);
});
现在运行时没有错误
yarn test