我有这个代码,我试图使用摩卡测试(我很新)。
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
返回undefined
。
测试环境中this
有什么问题?
我是否遗漏了与mocha特别相关的内容?
答案 0 :(得分:1)
根据您显示的代码判断,它不会实例化ColorMark
,也不会实际调用create('red')
,您似乎认为Mocha实际上做的更多。您在describe
的第一个参数中添加的内容主要用于您的权益。这些是测试套件标题。摩卡将它们传递给记者,记者们展示了它们,但就是这样。
以下是您可以这样做的方法:
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");
});
});
});
答案 1 :(得分:0)
您需要设置一个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");
})
})