【问题标题】:How do I write unit tests for a single JS file?如何为单个 JS 文件编写单元测试?
【发布时间】:2017-06-06 10:07:37
【问题描述】:

我有一个 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。设置起来真的很快。

标签: javascript unit-testing


【解决方案1】:

使用 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 调用测试。

【讨论】:

  • 导入和导出不起作用。如何在不使用 ES6 的情况下从文件中获取函数?
  • 我写的设置是使用node.js。据我所知,目前您必须转译 ES6 模块代码以使其在任何浏览器或任何 nodejs 版本中工作,例如使用 babel。另一方面,如果您需要测试在浏览器中运行的代码(问题中并不清楚),您可能需要使用 karma (karma-runner.github.io/1.0/index.html),这使得设置比仅运行mocha 脚本。
  • 我如何知道是否需要在浏览器中运行测试?还有一个带有 index.html 文件的简单应用程序,但并非所有代码都在 html 文件中。
  • 如果您的代码需要在浏览器中运行,您应该在浏览器中进行测试。当然,有些模块是纯逻辑的,不与浏览器交互,但是任何读取/操作 html、触发浏览器 API 等的代码都应该在浏览器中进行测试。如果它是用于网页的 javascript - 似乎是这种情况,因为你说有一个 index.html - 你应该使用 karma 我相信(这使我的答案无效)。
  • 好的,非常感谢。我也可以对原始问题使用业力吗?
猜你喜欢
  • 2020-05-28
  • 1970-01-01
  • 2018-01-17
  • 2012-01-06
  • 2019-03-17
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多