Могу ли я сделать заглушку для ряда результатов?"sinon.stub (). CallFake (() => {})" AssertionError: NaN - PullRequest
0 голосов
/ 24 ноября 2018

Насколько я понимаю, заглушка - это шпион, который вынужден предпринимать какие-либо действия, такие как выбор стороны (например, бросок).Могу ли я / или имеет ли смысл подделывать возвращаемый диапазон чисел?Я пытаюсь проверить «Loan.prototype.cost», который вызывает «Loan.prototype.payment», затем выполняет некоторые вычисления.

В закомментированной части моего фрагмента я попытался создать диапазонof number («const rdnPaymentReturn» от 85,61 до 85,63), и имитируют свойство «payment» в этом диапазоне (const paymentSpy).Но я получаю сообщение об ошибке «AssertionError: ожидаемое значение NaN будет в пределах 27.32..27.56»

Если я могу / или имеет смысл установить для «paymentSpy» диапазон значений (85.61-85.63), какразрешить эту ошибку AssertionError?

Ссылка:

beforeEach(function() {
        l = new Loan();
    });
    describe('#cost()', function() {
        it('should call #payment() and return the correct cost amount', function() {
            l.principal = 1000;
            l.term = 1;
            l.rate = 0.05;
            sinon.stub(l, 'payment').callsFake(() =>{ return 85.61; });
            expect(l.cost()).to.equal(27.32);
            // const rdnPaymentReturn = () =>{
            //     return Math.random() * (85.63 - 85.61) + 85.61;
            // }
            //const paymentSpy = sinon.stub(l, 'payment').callsFake(() =>{ return rdnPaymentReturn; });           
            //expect(l.cost()).to.be.within(27.32, 27.56);            
        });
    });

1 Ответ

0 голосов
/ 24 ноября 2018

Это не совсем верно:

const paymentSpy = sinon.stub(l, 'payment').callsFake(() =>{ return rdnPaymentReturn; });           

Это говорит: заглушка payment с функцией, которая при вызове возвращает ссылку на функцию rdnPaymentReturn.Но rdnPaymentReturn никогда не вызывается.

Поэтому вам нужно либо вернуть результат вызова функции:

const paymentSpy = sinon.stub(l, 'payment').callsFake(() => { 
        return rdnPaymentReturn() 
});

, либо просто передать функцию для вызова:

const paymentSpy = sinon.stub(l, 'payment').callsFake(rdnPaymentReturn);
...