AVA单元测试:使用gulp-ava测试全局功能

时间:2016-08-20 11:23:57

标签: javascript unit-testing requirejs jasmine ava

我是使用AVA进行JS单元测试的新手,我立刻就遇到了问题:

我的情况是我想运行gulp任务来运行AVA测试并观察测试文件,在我编写的测试文件中,我需要包含包含要测试的代码的js文件。

问题是带有要测试的代码的文件是一个带有所有全局函数的旧js文件,因此需要以某种方式将其填充到AMD模块中,但是如何在不更改原始文件的情况下执行此操作?

gulpfile.js

{
  "name": "name",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "ava"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "ava": "^0.16.0",
    "gulp": "^3.9.1",
    "gulp-ava": "^0.14.0",
    "jsdom": "^9.4.2"
  },
  "ava": {
    "require": [
      "./test/helpers/setup-browser-env.js"
    ]
  }
}

的package.json

import test from "ava";

// I need to import the js file to test

test.before(t => {

});

test("foo", t => {
    t.pass();
});

test('bar', async t => {
    const bar = Promise.resolve('bar');

    t.is(await bar, 'bar');
});

firstTest.tests.js

renderArray()

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你的意思是UMD,而不是AMD。 AMD不会工作。

我建议您关注recipe on browser testing with jsdom

您可以在顶部执行以下操作:

global.document = require('jsdom').jsdom('<body></body>');
global.window = document.defaultView;
require('./your-lib');

然后您可以在window global:

上访问您的图书馆
window.yourLib();

yourLib是你附加到图书馆window的方法。