2016-05-18 4 views
0

Если кто-то понимает, тесты, скажите, пожалуйста, как я могу осуществить тест для двух вещей:Модульное тестирование Mocha Sinon Chai (чек называют вложенными функциями)

1) метод был obj.newRing называется, когда функция makeRing начинается. 2) передается ли параметр 'num' функции makeRing (num) - это совпадения со свойством объекта, переданного в obj.newRing ({номер: num}).

function makeRing (num) { 
currRing = obj.newRing ({number: num}); 
} 

Может кто-то есть идеи, как использовать Sinon или еще в этой ситуации, я буду рад любой информации. Я страдаю в течение долгого времени ... Все спасибо!

ответ

0

Если у вас есть доступ к obj в тесте, вы можете сделать следующее:

// create a spy for your function: 
const newRingSpy = sinon.spy(); 

// replace the real function with the spy: 
sinon.stub(obj, 'newRing', newRingSpy); 

// run the test: 
makeRing(7); 

// 1) validate that obj.newRing was called exactly once: 
expect(newRingSpy.calledOnce).to.be(true); 

// 2) and/or validate the arguments it was called with: 
expect(newRingSpy.firstCall.args).to.eql([{number: 7}]); 

Если вы просто хотите знать, была ли функция называется вообще, то это уже покрыты второй проверки (если функция не была вызвана, newRingSpy.firstCall имеет значение null).

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

function makeRing (num, obj) { 
    currRing = obj.newRing ({number: num}); 
} 

Тогда вы можете легко передать погасил obj к makeRing() в тесте ,

+0

Что делать, если тест не имеет доступа к объекту? как решить тогда? – ajayv

+0

@ajayv Я обновил свой ответ; Отвечает ли это на ваш вопрос? – Nicole

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