Ответ 1
Там довольно хороший учебник для тестирования с Mocha и Phantom.JS здесь.
Раздел о Mocha и PhantomJS является коротким, но основная идея состоит в том, чтобы поместить утверждения DOM и взаимодействия в ваш тестовый набор Mocha, запустить его на стороне клиента через файл testrunner.html, а затем указать mocha-phantomjs на файл testrunner.html.
Чтобы перефразировать, ваш тест Mocha может выглядеть следующим образом:
describe("DOM Test", function () {
var el = document.createElement("div");
el.id = "myDiv";
el.innerHTML = "Hello World!";
document.body.appendChild(el);
var myEl = document.getElementById('myDiv');
it("has the right text", function () {
(myEl.innerHTML).should.equal("Hello World!");
});
});
И файл testrunner.html будет обычной настройкой:
<html>
<head>
<title> Tests </title>
<link rel="stylesheet" href="./node_modules/mocha/mocha.css" />
</head>
<body>
<div id="mocha"></div>
<script src="./node_modules/mocha/mocha.js"></script>
<script src="./node_modules/chai/chai.js"></script>
<script>
mocha.ui('bdd');
mocha.reporter('html');
var should = chai.should();
</script>
<script src="test/test.js"></script>
<script>
if (window.mochaPhantomJS) { mochaPhantomJS.run(); }
else { mocha.run(); }
</script>
</body>
</html>
Если вы предпочитаете, чтобы решение полностью запускалось из экосистемы node.js, стоит рассмотреть Zombie.JS. Это переполнение стека question дает базовый пример.
Компромисс заключается в том, что, хотя Zombie.JS можно использовать просто, требуя модуль node, и он чрезвычайно быстрый, он не является "настоящим" веб-браузером. PhantomJS ближе, так как он основан на webkit. Кроме того, первый подход с мокко-phantomjs позволит вам запускать тесты Mocha на стороне клиента в разных браузерах по вашему выбору, PhantomJS является лишь одним из них.