摩卡测试共享状态,因为范围不好
Mocha tests sharing state because of bad scoping?
我有一个文件"mochatest.js",看起来像这样:
(function(){
var MyObject = function(){
var myCount= 0;
return{
count: myCount
};
}();
module.exports = MyObject
})();
和一个看起来像这样的摩卡测试文件:
(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);
});
});
})();
我的第三个测试失败了:断言错误:1 == 0,所以感觉第二个测试中的 obj 与第三个测试中的 obj 相同。我预计它会是一个新的。
我是否编写了类似单例的东西?为什么在第三次测试中计数==1?我做错了什么?
我想
通了,我猜。我改变了两者,并得到了我期望的行为。
(function(){
var MyObj = function(){
var myCount= 0;
return{
count: myCount
};
} // <= note no more ();
module.exports =MyObj;
})();
以及我设置测试的方式(每个测试之前只有一次)
(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);
});
});
})();
相关文章:
- 正在全局范围中查找JavaScript函数
- 如何通过数组更新角度子范围
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- onclick函数需要双击,因为类分配延迟
- HTML范围:动态设置值属性
- "实例范围”;TypeScript类的getter/setter
- jquery日期选择器年份范围默认值
- Jpgraph:如何手动设置X轴和Y轴的范围
- 在对象数组中查找多个值的d3范围
- 动态加载angularjs并生成控制器和范围
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在Materialize Calendar中设置年份范围
- 在MVVM视图模型中处理应用程序范围的元素
- setInterval游戏循环的范围问题
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- AngularJS获取范围中的选定项目
- 从指定范围创建字符数组
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 如何延迟子指令的编译阶段,因为父指令的范围具有它所需的所有数据
- 摩卡测试共享状态,因为范围不好