Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向存根发出返回promise-mocha的函数_Javascript_Node.js_Mocha.js_Sinon_Stub - Fatal编程技术网

Javascript 向存根发出返回promise-mocha的函数

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

我不熟悉在MochaChai编写单元测试。我有一个名为appStore的函数:

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);