node.js 和 mocha 测试未定义的 Sinon 存根
Sinon stub undefined with node.js and mocha tests
我想模拟 ES6 的一个方法 class。
我正在导入模型模块:
// test.js
const models = require(path.resolve('./models'));
在模型文件夹中有一个 index.js 并且它在调用 models.user:
时重定向到用户文件夹中的 index.js
// models/index.js
models.user = user;
然后我在 index.js 中有一个用户 class:
// models/user/index.js
class User extends Model {
// simplified exists - it returns boolean or thows an error
static async exists(username) {
if (username) {
returns true
} else {
throw new Error('bad output');
}
}
}
我想用 sinon stub 存根 exist(username) 方法。
我在做:
const sinon = require('sinon');
const models = require(path.resolve('./models'));
describe.only('generateTokenBehavior()', function() {
it('should return 200 given valid username and password', function() {
...
const stub = sinon.stub();
stub(models.user.prototype, 'exists').callsFake(true);
...
});
我在带有存根的行上收到错误:
TypeError: Cannot read property 'callsFake' of undefined
这段代码有什么问题?我正在研究类似堆栈问题的这个问题,但没有找到答案。
这里的问题是调用sinon.stub()的结果作为函数returns undefined .
const sinon = require('sinon');
const models = require(path.resolve('./models'));
describe.only('generateTokenBehavior()', function() {
it('should return 200 given valid username and password', function() {
...
const stub = sinon.stub(models.user.prototype, 'exists').callsFake(true);
...
});
作为参考,文档位于:
http://sinonjs.org/releases/v4.1.1/stubs/#properties
我不怪你按你的方式写 - 文档有点误导。
我想模拟 ES6 的一个方法 class。
我正在导入模型模块:
// test.js
const models = require(path.resolve('./models'));
在模型文件夹中有一个 index.js 并且它在调用 models.user:
时重定向到用户文件夹中的 index.js// models/index.js
models.user = user;
然后我在 index.js 中有一个用户 class: // models/user/index.js
class User extends Model {
// simplified exists - it returns boolean or thows an error
static async exists(username) {
if (username) {
returns true
} else {
throw new Error('bad output');
}
}
}
我想用 sinon stub 存根 exist(username) 方法。
我在做:
const sinon = require('sinon');
const models = require(path.resolve('./models'));
describe.only('generateTokenBehavior()', function() {
it('should return 200 given valid username and password', function() {
...
const stub = sinon.stub();
stub(models.user.prototype, 'exists').callsFake(true);
...
});
我在带有存根的行上收到错误:
TypeError: Cannot read property 'callsFake' of undefined
这段代码有什么问题?我正在研究类似堆栈问题的这个问题,但没有找到答案。
这里的问题是调用sinon.stub()的结果作为函数returns undefined .
const sinon = require('sinon');
const models = require(path.resolve('./models'));
describe.only('generateTokenBehavior()', function() {
it('should return 200 given valid username and password', function() {
...
const stub = sinon.stub(models.user.prototype, 'exists').callsFake(true);
...
});
作为参考,文档位于: http://sinonjs.org/releases/v4.1.1/stubs/#properties
我不怪你按你的方式写 - 文档有点误导。