Примечание от переводчика
Здесь содержится перевод файла browser-testing.md. Если при нажатии на ссылку, содержащую последние правки в master ветке AVA, Вы не можете найти файл browser-testing.md
, то можете считать что перевод актуален.
Переводы: Français, Italiano, Русский
AVA не поддерживает запуск тестов в браузере, пока что. Некоторым библиотекам необходимы браузерное глобальное окружение(window
, document
, navigator
, и т.д.).
Один из примеров - это React, по крайней мере, если Вы собираетесь использовать ReactDOM.render и эмулировать DOM события с ReactTestUtils.
Этот пример работает с любыми библиотеками, которые моделируют браузерное окружение.
Установите jsdom.
JavaScript реализация WHATWG DOM и HTML стандартов, для использования с node.js
$ npm install --save-dev jsdom
Создайте вспомогательный файл и поместите его в каталог test/helpers
. В этом случае, AVA не будет рассматривать файл в качестве теста.
test/helpers/setup-browser-env.js
:
global.document = require('jsdom').jsdom('<body></body>');
global.window = document.defaultView;
global.navigator = window.navigator;
Сконфигурируйте AVA require
для подключения вспомогательного файла перед каждым тестовым файлом.
package.json
:
{
"ava": {
"require": [
"./test/helpers/setup-browser-env.js"
]
}
}
Напишите Ваши тесты и наслаждайтесь смоделируемым window
объектом.
test/my.react.test.js
:
import test from 'ava';
import React from 'react';
import {render} from 'react-dom';
import {Simulate} from 'react-addons-test-utils';
import sinon from 'sinon';
import CustomInput from './components/custom-input.jsx';
test('Input calls onBlur', t => {
const onUserBlur = sinon.spy();
const input = render(
React.createElement(CustomInput, onUserBlur),
div
);
Simulate.blur(input);
t.true(onUserBlur.calledOnce);
});