Javascript单元测试依赖项-如何在依赖对象更改时使测试失败
我有一个依赖于模型属性的控制器。 我编写了一个测试来测试这个控制器,并对模型进行了stubbed,当模型属性名称发生变化时,我如何使我的控制器测试失败 以下是一个例子: 型号:Javascript单元测试依赖项-如何在依赖对象更改时使测试失败,javascript,unit-testing,stubbing,sinon,Javascript,Unit Testing,Stubbing,Sinon,我有一个依赖于模型属性的控制器。 我编写了一个测试来测试这个控制器,并对模型进行了stubbed,当模型属性名称发生变化时,我如何使我的控制器测试失败 以下是一个例子: 型号: function Model(obj){ this.id = obj.id; this.name = obj.name; } 控制器: function Controller( model ){ this.model = model }; Controller.prototype.showName = f
function Model(obj){
this.id = obj.id;
this.name = obj.name;
}
控制器:
function Controller( model ){
this.model = model
};
Controller.prototype.showName = function() {
return this.model.name;
}
控制器测试:
describe("A controller", function(){
var controller = new Controller( new Model({id:1, name: "john"}) );
it ("should show the person name", function(){
expect(controller.showName).toEqual("john");
});
});
我希望每当“name”属性更改为其他属性(如“name2”)时,该测试失败
有人对如何在javascript中实现这一点提出了很好的建议吗
谢谢,
Shai由于模型已公开,您可以检查属性的存在
expect(controller.name).toBeDefined();
另一方面,如果模型的属性被重命名,控制器也不会被更改,这个测试无论如何都会失败。是的,我最终这样做了,但这并不完全是我的目标,因为我正在处理存根,我想要一些幕后机制来断言实际的属性存在,我可以把对象存根。好吧,你可以自己写匹配器<代码>返回对象hasOwnProperty(名称)代码>或者你可以做一个for-in循环,从原型链中获取所有属性,并检查其中一个是否具有你要查找的名称。谢谢,根据Christian Johansen的说法,你可以使用Sandbox来实现,尽管我还没有使用它,但我会检查它。