Javascript JsMockito在一块地上打短线
我有一个简单的对象,我在模仿,假设如下:Javascript JsMockito在一块地上打短线,javascript,mocking,Javascript,Mocking,我有一个简单的对象,我在模仿,假设如下: function MyObject() { this.SomeVariable = "some-value"; this.SomeFunction = function() { ... }; } 现在我想模拟变量,我正在做: var mockedObject = mock(MyObject); when(mockedObject).SomeVariable.thenReturn("some-other-value"); 但是它告诉我,
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";
您只能存根或验证交互(函数调用)。因为“SomeVariable”是对象中的一个属性,而不是对象中的函数,所以您无法存根或验证它的使用 所以你的结论是正确的;您只需提供所需的值作为对象的属性:
var mockedObject = mock(MyObject);
mockedObject.SomeVariable = "some-other-value";
如果是您自己的代码,另一种方法是将原始对象改为使用“getter”样式的函数,例如:
function MyObject() {
this.SomeVariable = function() { return "some-value"; };
this.SomeFunction = function() { ... };
}
对于真正的“对象”,这通常是一种比使用属性更好的方法。实际对象基本上是一个枚举,您提出了一个很好的观点,也许它们应该是函数。。。谢谢你的回答!