AVA no soporta ejecutar tests en el navegador, todavía. Algunas librerías requieren globales especifícos para el navegador (window
, document
, navigator
, etc).
Un ejemplo de esto es React, al menos si quieres usar ReactDOM.render y simular eventos con ReactTestUtils.
Esta guía funciona para cualquier librería que necesita un entorno de navegador simulado.
Instalar jsdom.
Una implementación en JavaScript de los estándares WHATWG DOM y HTML, para usar con node.js
$ npm install --save-dev jsdom
Crea un archivo de ayuda y guárdalo en el directorio test/helpers
. De esta forma AVA no lo considera como un test.
test/helpers/setup-browser-env.js
:
global.document = require('jsdom').jsdom('<body></body>');
global.window = document.defaultView;
global.navigator = window.navigator;
Configura AVA para que requiera (require
) el archivo de ayuda antes de cada test.
package.json
:
{
"ava": {
"require": [
"./test/helpers/setup-browser-env.js"
]
}
}
Escribe tus tests y disfruta del objeto window simulado.
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);
});