如何在 mocha 中编写测试用例

How to write test case in mocha

我有这段代码,我正在尝试使用 mocha(我对它很陌生)进行测试。

function ColorMark(){
    this.color = ""
    var that = this;

    this.create = function(color){
        that.color = color;
        console.log("Created a mark with " + that.color + " color");
    }
}

我做的是这个

describe('ColorMark', function(){
    describe('#create("red")', function(){
        it('should create red mark',function(){
            assert.equal(this.test.parent.ctx.color, "red");
        })
    })
});

错误:

AssertionError: "undefined" == "red"

that.color return undefined.

this 在测试环境中有什么问题?

我是否遗漏了与摩卡咖啡特别相关的内容?

您需要设置一个 beforeEach() 子句来设置测试并执行您的 ColorMark() 函数。

来自文档: http://mochajs.org/

  beforeEach(function(done){
    db.clear(function(err){
      if (err) return done(err);
      db.save([tobi, loki, jane], done);
    });
  })

所以在这种情况下它可能看起来像

function ColorMark(color){
    this.color = ""
    var that = this;

    this.create = function(color){
        that.color = color;
        console.log("Created a mark with " + that.color + " color");
    }
}

beforeEach(function(){
    ColorMark("red");
});

describe('#create("red")', function(){
    it('should create red mark',function(){
        assert.equal(this.test.parent.ctx.color, "red");
    })
})

从您显示的代码来看,它没有实例化 ColorMark 也没有实际调用 create('red'),您似乎认为 Mocha 做的比实际做的更多。您在 describe 的第一个参数中输入的内容主要是为了 您的 利益。这些是测试套件标题。 Mocha 将它们传递给记者,然后记者展示它们,仅此而已。

你可以这样做:

var assert = require("assert");

function ColorMark(){
    this.color = "";
    var that = this;

    this.create = function(color){
        that.color = color;
        console.log("Created a mark with " + that.color + " color");
    };
}

describe('ColorMark', function(){
    describe('#create("red")', function(){
        it('should create red mark',function(){
            var cm = new ColorMark();
            cm.create("red");
            assert.equal(cm.color, "red");
        });
    });
});