我有类似以下内容
import chai from "chai";
import { Thing } from "../src/Thing"
describe("",()=>{
it("", ()=>{
chai.assert.equal(Thing.doSomething(), true);
});
})
// Thing.mjs
import { ToMock } from "./Test"
export class Thing {
static doSomething(){
ToMock.doSomething();
}
}
因此,在这种情况下,我想模拟ToMock
。无需使用构造函数进行超级骇客的操作...
有没有办法模拟ESM导入?
此选项确实有效,但这是我要避免的事情...
import chai from "chai";
import { Thing } from "../src/Thing"
describe("",()=>{
let mock = {
doSomething: ()=>true;
}
let thing = new Thing(mock);
it("", ()=>{
chai.assert.equal(thing.doSomething(), true);
});
})
// Thing.mjs
import { ToMock } from "./Test"
export class Thing {
constructor(mock){
this.base = mock ? mock : ToMock;
}
doSomething(){
this.base.doSomething();
}
}
这似乎确实有效,但是必须有更好的方法。