【发布时间】:2018-08-05 17:22:37
【问题描述】:
我正在将 Mocha 与 Sinon 一起使用并尝试测试递归调用 (fibonacci)。我的代码是:
'use strict';
let sinon = require('sinon'),
chai = require('chai'),
expect = chai.expect;
chai.use(require('sinon-chai'));
let fib = function (n) {
if (n === 0) {
return 0;
} else if (n === 1) {
return 1;
} else {
return fib(n-2) + fib(n-1);
}
};
describe('fib', function() {
it('should repeat calculations', function() {
let originalFib = fib;
fib = sinon.spy(fib)
expect(fib(6)).to.equal(8);
expect(fib).to.have.callCount(25);
fib = originalFib;
});
});
但是,如果我替换该行,则此代码按原样工作:
let fib = function (n) {
与:
const fib = function (n) {
我收到以下错误:
TypeError:赋值给常量变量。
这正如预期的那样,但它提出了一个问题,我将如何测试使用 Sinon 声明为 const 的递归函数?
已编辑 Jasmine 有一个名为 .callThrough() 的东西,它似乎允许测试递归函数。
在我看来,诗浓没有办法复制这种行为吗?我查看了以下错误报告/功能请求:
https://github.com/sinonjs/sinon/issues/668
https://github.com/sinonjs/sinon/issues/989
谢谢。
【问题讨论】:
标签: javascript mocha.js sinon