2016-07-31 3 views
0

Итак, у меня есть эта функция, которая вызывается, когда задан некоторый атрибут модели магистрали. То есть:Жасмин ждать до тех пор, пока функция, вызванная прослушивателем, не будет выполнена

this.listenTo(model, "change:someattr", changeCallback); 

То, что я хочу сделать в моем Jasmine тестов, чтобы установить этот атрибут, а затем проверить, если changeCallback был призван успешно и, если это привело к желаемым изменениям. В моем коде ниже выглядит, что моя функция changeCallback вызывается после утверждения жасмина.

that.model.set('someattr', 'xyz'); 
expect(that.model.changeCallback).toHaveBeenCalled(); 

Любые идеи, как проверить это? Все примеры кода, которые я нашел, касаются вызовов asych, которые выполняются непосредственно в асинхронной функции.

+0

Можете ли вы уточнить, где живет changeCallback? На ваш первый код точно, кажется, что он живет на виду, но второй кажется, что обратный вызов относится к самой модели? – noahpc

ответ

0

Обработчик изменение модели будет происходить сразу же, как нет ответа сервера ждать так просто:

  1. Шпион на changeCallback и звонить через (http://jasmine.github.io/2.4/introduction.html#section-Spies:_and.callThrough).
  2. model.set («attributeToChange», «somethingNew»)
  3. утверждают, что шпион changeCallback был назван
  4. утверждать, что ожидаемое поведение произошло.

В качестве альтернативы вы можете разделить на два теста, в которых только один из них проверяет, что изменение атрибута вызвало обратный вызов, а секунда, которая только что проверила функцию обратного вызова.

Смежные вопросы