У меня есть базовый электронный тест приложения:
const Application = require('spectron').Application;
const electronPath = require('electron');
const path = require('path');
describe.only('Basic Electron App Test', () => {
var context;
jest.setTimeout(10000);
beforeEach( () => {
context = {};
context.app = new Application({
path: electronPath,
args: [path.join(__dirname, '..')]
});
return context.app.start();
});
afterEach( () => {
if(context.app && context.app.isRunning()) {
return context.app.stop();
}
})
test("Button click changes header text", () => {
context.app.client.element('button').click();
return context.app.client.element('h1').getText().then((text) => {
expect(text).toEqual("Clicked");
});
});
});
В тесте я нажимаю кнопку и проверяю, изменяется ли текст. HTML-файл, который определяет разметку, загружает JS-файл, который содержит функцию, которая запускается при нажатии кнопки. Если я запускаю jest --coverage
, этот файл javascript не будет покрыт. Как сделать так, чтобы Jest генерировал отчет и для тех файлов, которые вызываются в электронном приложении, а не с явным оператором require(...)
в тестовых файлах.
Jest использует встроенный в него инструмент istanbul для покрытия кода. Если я использую nyc в тестах mocha, как я могу охватить js файлы в электронном контексте.