Мокка и зомби
Я начинаю проект nodejs и хотел бы сделать BDD с Mocha и Zombiejs. К сожалению, я новичок в каждом слове в этом предложении. Я могу заставить Mocha и Zombiejs работать отлично, но я не могу интегрировать их в два - возможно ли использовать Mocha для запуска тестов Zombiejs, и если да, то как это будет выглядеть?
Просто ища "привет мир", чтобы начать меня, но учебник/пример будет еще лучше.
Спасибо!
Ответы
Ответ 1
Предполагая, что вы уже установили mocha
, zombie
и expect.js
в соответствии с инструкциями, это должно сработать для вас:
// Put below in a file in your *test* folder, ie: test/sampletest.js:
var expect = require('expect.js'),
Browser = require('zombie'),
browser = new Browser();
describe('Loads pages', function(){
it('Google.com', function(done){
browser.visit("http://www.google.com", function () {
expect(browser.text("title")).to.equal('Google');
done();
});
});
});
Затем вы можете запустить команду mocha
из корневой папки приложения:
# mocha -R spec
Loads pages
✓ Google.com (873ms)
✔ 1 tests complete (876ms)
Примечание. Если ваши тесты не работают из-за тайм-аутов, это помогает немного увеличить время ожидания mocha
, используя аргумент -t
. Для получения подробной информации ознакомьтесь с документацией mocha.
Ответ 2
Я написал длинный ответ на этот вопрос, объясняющий важные ошибки, касающиеся асинхронных тестов, хороших практик ( "before()", "after()", TDD,...) и иллюстрируется примером реального мира.
http://redotheweb.com/2013/01/15/functional-testing-for-nodejs-using-mocha-and-zombie-js.html
Ответ 3
если вы хотите использовать cucumber-js для ваших приемочных тестов и мокко для ваших "единичных" тестов для страницы, вы можете использовать cuked-zombie (извините за рекламу).
Установите его, как описано в readme на github, но поместите свою конфигурацию мира в файл world-config.js
`/* globals __dirname */
var os = require('os');
var path = require('path');
module.exports = {
cli: null,
domain: 'addorange-macbook': 'my-testing-domain.com',
debug: false
};
Затем используйте мокко с зомби в своих модульных тестах следующим образом:
var chai = require('chai'), expect = chai.expect;
var cukedZombie = require('cuked-zombie');
describe('Apopintments', function() {
describe('ArrangeFormModel', function() {
before(function(done) { // execute once
var that = this;
cukedZombie.infectWorld(this, require('../world-config'));
this.world = new this.World(done);
// this inherits the whole world api to your test
_.merge(this, this.world);
});
describe("display", function() {
before(function(done) { // executed once before all tests are run in the discribe display block
var test = this;
this.browser.authenticate().basic('maxmustermann', 'Ux394Ki');
this.visitPage('/someurl', function() {
test.helper = function() {
};
done();
});
});
it("something on the /someurl page is returned", function() {
expect(this.browser.html()).not.to.be.empty;
});
Ответ 4
Если вы используете Microsoft Visual Studio, вы можете взглянуть на Роба Эштона Zombify. Все приемлемо интегрировано, поэтому вы можете начать писать свои тестовые примеры в JavaScript или CoffeeScript. Кстати, обучение CoffeeScript займет у вас как час, и это стоит каждую минуту.