JsMockito заглушки поле - PullRequest
0 голосов
/ 05 мая 2011

У меня есть простой объект, над которым я издеваюсь, предположим что-то вроде этого:

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 Ответ

1 голос
/ 05 мая 2011

Вы можете только заглушки или проверки взаимодействия (вызовы функций).Поскольку SomeVariable является атрибутом в объекте, а не функцией в объекте, вы не можете заглушить или проверить его использование.

Таким образом, ваш вывод верен;Вы просто должны указать нужное значение в качестве атрибута объекта:

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

Альтернативой, если это ваш собственный код, является изменение исходного объекта вместо использования функции стиля «получатель», например::

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

Для истинных «объектов» это часто лучший подход, чем использование атрибутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...