摩卡和ZombieJS

时间:2012-02-19 14:53:40

标签: node.js bdd mocha zombie.js

我正在开始一个nodejs项目,并希望用Mocha和Zombiejs做BDD。不幸的是,我对这句话中的每一个流行词都不熟悉。我可以让Mocha和Zombiejs运行测试很好,但我似乎无法整合两者 - 是否有可能使用Mocha来运行Zombiejs测试,如果是这样,那怎么样?

只是寻找“hello world”让我开始,但教程/示例会更好。

谢谢!

4 个答案:

答案 0 :(得分:36)

假设您已根据说明安装了mochazombieexpect.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会花费你一个小时,每分钟都值得。