Javascript 玩笑承诺返回未定义

Javascript 玩笑承诺返回未定义,javascript,jestjs,Javascript,Jestjs,我的代码: this.apiStore.fetchOrder(id).then(() => { alert("Success"); // TODO - ui updates }) 玩笑测试: describe("order", () => { it("fetches the order", () => { const fetchOrder = jest.fn(); const id = 100; expect(fetch

我的代码:

this.apiStore.fetchOrder(id).then(() => {
  alert("Success");
  // TODO - ui updates
})
玩笑测试:

  describe("order", () => {
    it("fetches the order", () => {
      const fetchOrder = jest.fn();
      const id = 100;
      expect(fetchOrder).toHaveBeenCalledWith(id);
    });
  });
但我得到了以下错误:

无法读取未定义的属性“then”

你知道怎么解决这个问题吗

编辑1:

Fetchorder api调用定义如下

fetchOrder = (orderId) => {
    return this.fetch(
      `/api/order.json`,
      {
        method: "POST",
        body: {
          id: orderId
        },
      }
    );
  };
def fetch_order
  render json: { status: :ok }
end
现在,我返回的答复如下:

{"status":"ok"}
如果删除
.then()=>{..}
则测试运行正常。有什么想法吗

编辑2:后端代码如下

fetchOrder = (orderId) => {
    return this.fetch(
      `/api/order.json`,
      {
        method: "POST",
        body: {
          id: orderId
        },
      }
    );
  };
def fetch_order
  render json: { status: :ok }
end

fetchOrder函数不返回承诺实例,您应该检查它的实现或共享它。

请向我们展示fetchOrder的代码,如果您模拟了它,请向我们展示模拟。@NicholasTower:添加了代码和响应数据
,现在我返回的响应为{“状态”:“ok”}
请向我们展示进行模拟的代码。@NicholasTower:添加了您误解的后端代码,我不是问后端代码,而是问您的测试代码。为了让
expect(fetchOrder)
正常工作,您必须在测试中模拟或至少监视fetchOrder。所以我在寻找设置这个的测试代码。它可能包括
jest.mock
jest.spyOn
jest.fn