2016-11-09 7 views
1

Так я тестирую приложение React с Mocha + Enzyme + Sinon. Я пытаюсь проверить функцию с оператором if, в котором есть вызов другой функции. Моя цель - ввести оператор if, но заглушить второй вызов функции. Вот код:Функция Sinon Stub в другой функции

onSearchChange = ({value}) => { 
    const port = '/search-users?search_q='; 
    const path = [port, value].join(''); 

    if (value.length >= 2 && value.length <= 5) { 
     this.getUsers(path, (array) => { 
      this.setState({ suggestions: fromJS(array) }) 
     }); 
    } 
}; 

Так что я хочу, чтобы войти, если заявление, но не называйте getUsers функции(). Как я могу это сделать? Я шпионил onSearchChange(), как это:

const wrapper = shallow(<ContentEditor />); 
const spy = sinon.spy(wrapper.instance(), 'onSearchChange'); 

С нетерпением ждем, спасибо!

+0

Вы никогда не должны макет или тупиковые методы на объекте испытываешь. В вашем случае я предполагаю, что 'getUser' делает какой-то запрос ajax, поэтому закройте те вещи, которые делают запрос, а не манипулируют вашим тестированным классом. –

ответ

0

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

sinon.stub(ContentEditor.prototype, 'getUsers') 

и проверить его как

expect(ContentEditor.prototype.getUsers.called).to.be.true;