我有一个文件“mochatest.js”,如下所示:
(function(){
var MyObject = function(){
var myCount= 0;
return{
count: myCount
};
}();
module.exports = MyObject
})();
和一个看起来像这样的mocha测试文件:
(function(){
var assert = require("assert");
describe("actual test", function(){
it("should start with count of zero", function(){
var obj = require("../mochatest.js");
assert.equal(obj.count, 0);
});
it("should be able to increment counter", function(){
var obj = require("../mochatest.js");
obj.count=1;
assert.equal(obj.count, 1);
});
it("should start with count of zero", function(){
var obj = require("../mochatest.js");
assert.equal(obj.count, 0);
});
});
})();
我的第三次测试失败了: AssertionError:1 == 0 因此感觉第二次测试中的obj与第三次测试中的obj相同。我希望它是一个新的。
我是否编写了类似单身人士的内容?为什么在第三次测试中count == 1?我做错了什么?
答案 0 :(得分:0)
我想,我想出来了。我改变了两个并得到了我期望的行为。
(function(){
var MyObj = function(){
var myCount= 0;
return{
count: myCount
};
} // <= note no more ();
module.exports =MyObj;
})();
以及我设置测试的方式(在beforeEach之前只有一次)
(function(){
var assert = require("assert");
describe("actual test", function(){
var obj;
beforeEach(function(done){
var MyObject = require("../mochatest.js");
obj = new MyObject();
done();
});
it("should start with count of zero", function(){
assert.equal(obj.count, 0);
});
it("should be able to increment counter", function(){
obj.count=1;
assert.equal(obj.count, 1);
});
it("should start with count of zero", function(){
assert.equal(obj.count, 0);
});
});
})();