AVA Unit Test: используйте gulp-ava для тестирования глобальных функций
Я новичок в использовании AVA для модульных тестов JS, и я сразу же попал в камень:
Моя ситуация заключается в том, что я хочу запустить задачу gulp для запуска тестов AVA и просмотра тестовых файлов, и в записанный мной тестовый файл мне нужно включить файл js, содержащий код для тестирования.
Проблема в том, что файл с тестируемым кодом является старым файлом js со всеми глобальными функциями, поэтому его необходимо каким-то образом поместить в модуль AMD, но как я могу это сделать, не меняя исходный файл?
gulpfile.js
var gulp = require("gulp");
var ava = require("gulp-ava");
var srcUnitTestFiles = ["**/*.tests.js", "!node_modules/*.js"];
gulp.task("unit-tests-exec", () =>
gulp.src(srcUnitTestFiles)
// gulp-ava needs filepaths so you can't have any plugins before it
.pipe(ava({ verbose: true }))
);
gulp.task("unit-tests-watch", () =>
gulp.watch(srcUnitTestFiles, ["unit-tests-exec"])
);
package.json
{
"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"
]
}
}
firstTest.tests.js
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');
});
Спасибо!
1 ответ
Я думаю, что вы имеете в виду UMD, а не AMD. AMD не будет работать.
Я предлагаю вам следовать нашему рецепту по тестированию браузера сjsdom
,
Вы могли бы сделать следующее в верхней части:
global.document = require('jsdom').jsdom('<body></body>');
global.window = document.defaultView;
require('./your-lib');
И тогда вы можете получить доступ к вашей библиотеке на window
Глобальный:
window.yourLib();
С yourLib
будучи методом, к которому вы привязаны window
в вашей библиотеке.