【问题标题】:Mocha and ZombieJS摩卡和僵尸JS
【发布时间】:2014-09-17 03:46:38
【问题描述】:

我正在启动一个 nodejs 项目,并想用 Mocha 和 Zombiejs 做 BDD。不幸的是,我对这句话中的每个流行词都不熟悉。我可以让 Mocha 和 Zombiejs 很好地运行测试,但我似乎无法将两者集成 - 是否可以使用 Mocha 来运行 Zombiejs 测试,如果可以,看起来如何?

只是寻找“hello world”来帮助我入门,但教程/示例会更好。

谢谢!

【问题讨论】:

  • 我的答案是你的想法吗?
  • 是的,这就是我想要的。谢谢!

标签: node.js bdd mocha.js zombie.js


【解决方案1】:

假设您已经按照说明安装了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)

注意:如果您的测试由于超时而一直失败,则可以通过使用-t 参数来稍微增加mocha 的超时设置。查看 mocha 的文档了解完整的详细信息。

【讨论】:

  • 请注意,如果与 nodejs 0.10.xx 一起使用,zombiejs 会失败,因为这个问题github.com/assaf/zombie/issues/487欢呼
  • 请注意,问题似乎已解决!
【解决方案2】:

我对这个问题写了长篇回复,解释了关于异步测试的重要陷阱、良好实践('before()'、'after()'、TDD、...),并通过一个真实世界的示例进行了说明。

http://redotheweb.com/2013/01/15/functional-testing-for-nodejs-using-mocha-and-zombie-js.html

【讨论】:

  • 你有没有移动过这篇文章?
  • 啊,我也很想看这个!你不会把它搬到波斯特海文吧?
  • 嘻嘻,僵尸线程。文章已移:redotheweb.com/2013/01/15/…
  • 修复了断开的链接。
【解决方案3】:

如果您想使用 cucumber-js 进行验收测试并使用 mocha 进行页面的“单元”测试,您可以使用 cuked-zombie(抱歉打广告)。

按照 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
};

然后在你的单元测试中使用 mocha 和僵尸,如下所示:

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;
      });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2012-03-11
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多