尝试存根ES6导入方法。但是sinon调用了原始方法。
//utils.js
export function getUser(name) {
return name + " has been fetched";
}
//user.js
import { getUser } from './utils.js';
export default function printName() {
return getUser("user");
}
//user.test.js
import sinon from 'sinon';
import * as utils from '../src/utils.js';
import printName from '../src/user.js';
const assert = require('assert');
describe('print name', () => {
it('should fetch and print the user name', async () => {
let utilsStub = sinon.stub(utils, 'getUser');
utilsStub.withArgs("user").returns("test");
assert.equal("test", printName());
});
});
在同一模块内调用方法时,它会正确地存根,不确定是否有错误。帮助将不胜感激。
答案 0 :(得分:0)
您的代码对我来说很好:
utils.ts
:
export function getUser(name) {
return name + " has been fetched";
}
user.ts
:
import { getUser } from "./utils";
export default function printName() {
return getUser("user");
}
user.test.ts
:
import sinon from "sinon";
import * as utils from "./utils";
import printName from "./user";
const assert = require("assert");
describe("print name", () => {
it("should fetch and print the user name", async () => {
let utilsStub = sinon.stub(utils, "getUser");
utilsStub.withArgs("user").returns("test");
assert.equal("test", printName());
});
});
带有覆盖率报告的单元测试结果:
print name
✓ should fetch and print the user name
1 passing (10ms)
--------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
--------------|----------|----------|----------|----------|-------------------|
All files | 93.33 | 100 | 75 | 92.86 | |
user.test.ts | 100 | 100 | 100 | 100 | |
user.ts | 100 | 100 | 100 | 100 | |
utils.ts | 50 | 100 | 0 | 50 | 2 |
--------------|----------|----------|----------|----------|-------------------|
源代码:https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/56482038