我有两个JS模块,分别是A和B。在模块A中,我有一个方法依赖于从模块B导入的另一个方法。现在我如何用sinon.spy测试,是否A的方法会触发B的方法?
//ModuleA.js
import{ methodFromB } from "ModuleB.js";
function methodFromA (){
methodFromB();
}
export{
methodFromA
}
//ModuleB.js
function methodFromB (){
//doSomething
}
import sinon from 'sinon';
import { assert,expect } from "chai";
import * as modB from "ModuleB.js";
import { methodA } from '../js/ModuleA.js';
describe("ModuleA.js", function() {
beforeEach(function() {
stubmethod = sinon.stub(modB, "methodB").returns("success");
});
after(function() {
});
describe("#methodA", function() {
it("Should call the method methodB", function() {
expect(methodA()).to.deep.equal('success');
expect(stubmethod.calledOnce).to.equal(true);
});
});
});
尝试对方法B进行存根处理后,出现错误“未定义的期望值与“成功”非常相等”。
谢谢。
答案 0 :(得分:0)
您应该模拟模块B,并希望它被调用而不是methodFromA的间谍
答案 1 :(得分:0)
您从module B
存错了功能。根据您的源文件,它应该是methodFromB
而不是methodB
。
describe("ModuleA.js", function () {
beforeEach(function () {
stubmethod = sinon.stub(modB, "methodFromB").returns("success"); // change to methodFromB
});
after(function () {
stubmethod.restore(); // don't forget to restore
});
describe("#methodA", function () {
it("Should call the method methodB", function () {
expect(methodA()).to.deep.equal('success');
expect(stubmethod.calledOnce).to.equal(true);
});
});
});