JsMockito抄写一个字段

时间:2011-05-05 07:33:23

标签: javascript mocking

我有一个简单的对象,我正在嘲笑,假设这样的事情:

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";

1 个答案:

答案 0 :(得分:1)

您只能存根或验证交互(函数调用)。因为“SomeVariable”是对象中的属性,而不是对象中的函数,所以不能存根或验证对它的使用。

所以你的结论是正确的;您应该只提供您想要的值作为对象的属性:

var mockedObject = mock(MyObject);
mockedObject.SomeVariable = "some-other-value";

另一种选择,如果它是你自己的代码,则是改变原始对象而不是使用“getter”样式函数,例如:

function MyObject() {
    this.SomeVariable = function() { return "some-value"; };
    this.SomeFunction = function() { ... };
}

对于真正的“对象”,这通常是比使用属性更好的方法。