Reactjs 模拟返回承诺的组件方法

Reactjs 模拟返回承诺的组件方法,reactjs,jestjs,Reactjs,Jestjs,我需要为以下原型方法validateAddress创建单元测试: 对于您的情况,您可以使用该方法模拟postAddress请求的响应 这就是你可以在测试中监视它的方式 it('should call postAddress', () => { jest.spyOn(MyService, 'postAddress').mockImplementationOnce(() => ( ...expected response )); }); 我采纳了文君的建议,并最终将其付

我需要为以下原型方法validateAddress创建单元测试:


对于您的情况,您可以使用该方法模拟postAddress请求的响应

这就是你可以在测试中监视它的方式

it('should call postAddress', () => {
  jest.spyOn(MyService, 'postAddress').mockImplementationOnce(() => (
    ...expected response
  ));
});

我采纳了文君的建议,并最终将其付诸实施:

const spy = jest
      .spyOn(MyService.prototype, 'postAddress')
      .mockImplementationOnce(() => {
          return new Promise(resolve => {
                resolve(fixtures.addressPostSuccess);
          });
      });
如果我想模仿失败:

const spy = jest
      .spyOn(MyService.prototype, 'postAddress')
      .mockImplementationOnce(() => {
           return new Promise((resolve, error) => {
                error(fixtures.addressPostFailure);
           });
      });

我是否只是在开始时调用构造函数,即每次myService=newmyservice?对于上面的问题,您是指您的测试/规范文件吗?或者你的组件文件?在测试中,我是否需要新的MyService?出于某种原因,测试采用了真实的postAddress方法。。。我用你的例子。。。不确定我做错了什么在那个测试中没有必要初始化myService=newmyservice。您可以在测试顶部导入MyService,然后监视它,如我的示例所示。让我进行编辑,因为我的代码段上有一个打字错误。。
const spy = jest
      .spyOn(MyService.prototype, 'postAddress')
      .mockImplementationOnce(() => {
          return new Promise(resolve => {
                resolve(fixtures.addressPostSuccess);
          });
      });
const spy = jest
      .spyOn(MyService.prototype, 'postAddress')
      .mockImplementationOnce(() => {
           return new Promise((resolve, error) => {
                error(fixtures.addressPostFailure);
           });
      });