我有一个我正在模拟的简单对象,假设如下:
function MyObject() {
this.SomeVariable = "some-value";
this.SomeFunction = function() { ... };
}现在我想模拟一下我正在做的变量:
var mockedObject = mock(MyObject);
when(mockedObject).SomeVariable.thenReturn("some-other-value");但是,它告诉我不能对此使用thenReturn() ...记不住确切的错误,但有人知道解决这个问题的方法吗?或者我应该这样做:
var mockedObject = mock(MyObject);
mockedObject.SomeVariable = "some-other-value";发布于 2011-05-05 17:45:18
您只能存根或验证交互(函数调用)。因为"SomeVariable“是对象中的一个属性,而不是对象中的一个函数,所以您不能存根或验证它的使用。
因此,您的结论是正确的;您只需提供所需的值作为对象的属性:
var mockedObject = mock(MyObject);
mockedObject.SomeVariable = "some-other-value";如果是您自己的代码,另一种方法是将原始对象更改为使用"getter“样式的函数,例如:
function MyObject() {
this.SomeVariable = function() { return "some-value"; };
this.SomeFunction = function() { ... };
}对于真正的“对象”,这通常是比使用属性更好的方法。
https://stackoverflow.com/questions/5894155
复制相似问题