我如何为单个JS文件编写单元测试?

6

我有一个包含函数的js文件。我想为这个函数编写单元测试,并将测试和文件一起提交给别人。它需要是独立的。

这是我的项目:

src: myFunction.js
tests: empty for now

myFunction.js:

function HelloWord() {
   return 'Hello';
}

如果有这样一个测试文件,那就太好了:

import { func } from './myFunction.js';

describe('tests', function () {
    it('returns hello', function () {
        expect(func()).toEqual('Hello');
    });
});

我不知道哪种单元测试框架是最容易和最快完成我需要做的事情。用户需要获取我的目录,只需从命令行运行测试即可。


检查一下 mocha。它的设置非常快速。 - Sergeon
1个回答

7

使用 Mocha,非常快速的设置步骤如下:

1)将 mocha 安装到 package.json 中:

npm install --save-dev mocha

2)编写测试代码。假设测试代码为/tests/test.js,例如:

var myFunc = require('./myFunction');

var assert = require('assert');
describe('the function' , function(){
    it('works' , function(){
        assert.equal( myFunc() , 'hello');
    });
});

3) 设置package.json的测试命令:

{
    ...
    "scripts": {
        "test": "node_modules/mocha/bin/mocha tests/test.js"
    }
}

4) 通过 npm test 调用测试。


1
我编写的设置是使用node.js。据我所知,目前你必须将ES6模块代码转译为适用于任何浏览器或任何nodejs版本的代码,例如使用babel。另一方面,如果你需要测试在浏览器中运行的代码 - 在问题中不太清楚 - 你可能需要使用karma(https://karma-runner.github.io/1.0/index.html),这使得设置比仅仅运行一个`mocha`脚本要复杂一些。 - Sergeon
1
如果您的代码需要在浏览器中运行,那么您应该在浏览器中进行测试。当然,有一些模块是纯逻辑且不与浏览器交互的,但是任何读取/操作HTML、触发浏览器API等的代码都应该在浏览器中进行测试。如果这是用于网页的JavaScript -因为您提到了index.html- 我认为您应该使用 karma(这使我的答案无效)。 - Sergeon
你需要对myFunction.js文件进行哪些操作才能使Mocha示例正常工作?我在require()调用中遇到了失败。(“找不到模块...”) - Richard A Quadling
我必须进行轻微修改才能使其正常工作:"test": "node ./node_modules/mocha/bin/mocha tests/test.js" - nedstark179
或者只需运行 npx mocha 来运行测试。 - Guillaume Husta
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接