我正在开始一个nodejs项目,并希望用Mocha和Zombiejs做BDD。不幸的是,我对这句话中的每一个流行词都不熟悉。我可以让Mocha和Zombiejs运行测试很好,但我似乎无法整合两者 - 是否有可能使用Mocha来运行Zombiejs测试,如果是这样,那怎么样?
只是寻找“hello world”让我开始,但教程/示例会更好。
谢谢!
答案 0 :(得分:36)
假设您已根据说明安装了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的文档以获取完整的详细信息。
答案 1 :(得分:7)
我写了一个冗长的回答这个问题,解释了有关异步测试,良好实践('before()','after()',TDD,......)的重要问题,并通过现实世界的例子说明。
http://redotheweb.com/2013/01/15/functional-testing-for-nodejs-using-mocha-and-zombie-js.html
答案 2 :(得分:1)
如果你想使用cucumber-js进行验收测试,并使用mocha进行你的"单位"测试页面时,您可以使用cuked-zombie(抱歉广告)。
像在github上的自述文件中所描述的那样安装它,但是将您的world配置放在名为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
};
然后在你的单元测试中使用mocha和zombie:
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;
});
答案 3 :(得分:-1)
如果您使用的是Microsoft Visual Studio,您可能需要查看Rob Ashton的Zombify。一切都是可接受的集成,因此您可以开始使用JavaScript或CoffeeScript编写测试用例。顺便说一句,学习CoffeeScript会花费你一个小时,每分钟都值得。