{})"断言错误 : NaN-6ren"> {})"断言错误 : NaN-根据我的理解, stub 是被迫采取行动的 spy ,例如选择一方(即 throw )。我可以/或者假装返回一个数字范围是否有意义?我正在尝试测试一个“Loan.prototype.cost”,它调用-6ren">
gpt4 book ai didi

javascript - 我可以为一系列结果制作 stub 吗? "sinon.stub().callsFake(()=>{})"断言错误 : NaN

转载 作者:行者123 更新时间:2023-11-28 20:49:22 25 4
gpt4 key购买 nike

根据我的理解, stub 是被迫采取行动的 spy ,例如选择一方(即 throw )。我可以/或者假装返回一个数字范围是否有意义?我正在尝试测试一个“Loan.prototype.cost”,它调用“Loan.prototype.payment”,然后进行一些计算。

在我的代码段的注释掉的部分,我尝试创建一个数字范围(从 85.61 到 85.63 的“const rdnPaymentReturn”),并将“payment”属性伪造为这个范围(const paymentSpy)。但我会收到错误提示“AssertionError: expected NaN to be within 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);
});
});

最佳答案

这不太对:

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

意思是: stub payment 带有一个函数,该函数在被调用时返回对函数 rdnPaymentReturn 的引用。但是 rdnPaymentReturn 从未被调用。

所以你需要返回调用函数的结果:

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

或者直接传入函数调用:

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

关于javascript - 我可以为一系列结果制作 stub 吗? "sinon.stub().callsFake(()=>{})"断言错误 : NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53453975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com