2016-12-05 4 views
0

Я пытаюсь проверить следующую функцию подстановок контроллера компонента:.

lookup() { 
    if (this.index == 1) { 
     return $.get('http://www.stackoverflow.com').then(res => { 
      this.index = res.data; 
      return res; 
     }); 
    } 
} 

Чтобы проверить это, это то, что Я делаю:

controller.lookup(); 

Большую часть времени, он только выполняет эту строку

if (this.find.index == 1) { 
     return $.get('http://www.stackoverflow.com'); 
} 

и не исполняющий .then(..) обещание.

Я предполагаю, что во время некоторых прогонов я получаю ответ от запроса «получить» jquery, следовательно, выполняется «то» обещание, но есть ли способ подождать, пока не будет получен ответ «получить» или подделать ответ? (Пробовал использовать шпион синонов, но пока не повезло)

Цените свою помощь!

ответ

0

Рекомендуемый способ заключается в издевательстве/шпионаже на вызовы api. Вы можете сделать что-то вроде этого,

sinon.stub($, 'get').returns({then: function(callback) { 
    callback({user: 'ABC'}); 
}}); 

Здесь работает example

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

+0

Спасибо, что сработало для меня. – angTest9