Javascript 向存根发出返回promise-mocha的函数
我不熟悉在MochaChai编写单元测试。我有一个名为appStore的函数:Javascript 向存根发出返回promise-mocha的函数,javascript,node.js,mocha.js,sinon,stub,Javascript,Node.js,Mocha.js,Sinon,Stub,我不熟悉在MochaChai编写单元测试。我有一个名为appStore的函数: public appStore(name) { return this.connector.findOne(name).then((record) => { if (!record) { throw new Error("Record not found"); } return record.data; }); } 此处record.da
public appStore(name) {
return this.connector.findOne(name).then((record) => {
if (!record) {
throw new Error("Record not found");
}
return record.data;
});
}
此处record.data是一个包含以下内容的对象:
{
a: "ValueA",
b: "ValueB",
c: "ValueC"
}
我试图将函数存根。但是不能正确地得到它
import myClass from "testClass.service";
describe("MyModule", () => {
const sandbox = sinon.createSandbox();
let valTest;
beforeEach(() => {
const userObj = {
a: "ValueA",
b: "ValueB",
c: "ValueC"
};
valTest = sandbox.stub(myClass , "appStore").returns(userObj );
});
afterEach(() => {
sandbox.restore();
});
it("myfunc1 is a proxy for myfunc2", () => {
expect(myClass.appStore("dataname")).to.eql(userObj );
});
});
如果我错了,请纠正我,因为我是初学者。任何帮助都将不胜感激
提前感谢。通常,您不希望在类上存根方法,而只希望在该类的单个对象上存根方法。要返回承诺,请使用resolves而不是returns 如果您真的想为从特定类派生的所有对象存根一个非静态方法,您可以在原型上完成
sandbox.stub(myClass.prototype, "appStore").resolves(userObj);
appStore方法在类本身上仍然不存在,但是您可以验证存根是否可以使用任何对象工作
expect((new myClass).appStore("dataname")).to.eql(userObj);
在我的类中,我已经创建了像export default new GetStore;这样的实例。那么在这个场景中,我如何使用它呢?谢谢。那么,是期望失败了,还是您遇到了其他错误?是的,它失败了&抛出错误:AssertionError:expected{}深度等于{Object a,b,…}
expect((new myClass).appStore("dataname")).to.eql(userObj);