0

我正在使用带有 axios 的 MockAdapter 来模拟故事书中的 api 响应

export const defaultAccountMockAPI = () => {
  const mock = new MockAdapter(axiosInstance);

  const defaultAccountDetails = objectKnob('Default Account Details', DefaultAccountDetails);
  mock
    .onGet(
      '/services/api/account/1902124261/account-details',
    )
    .reply(() => {
      return [200, defaultAccountDetails];
    });
};

export const accoutMockAPI = () => {
  const mock = new MockAdapter(axiosInstance);

  const accountDetails = objectKnob('Account Details', AccountDetails);
  mock
    .onGet(
      '/services/api/account/1902124221/account-details',
    )
    .reply(() => {
      return [200, accountDetails];
    });
};

假设我有上述两种模拟默认帐户详细信息和帐户详细信息的方法。这两种方法之间的唯一区别是不同的帐户 ID (1902124261/1902124221)。我需要根据这两个不同的帐户显示 2 个故事,我如何抽象模拟 api 方法而不是为每个故事我需要编写这些重复的代码(除了帐户 id,我还有其他参数也有这个问题.)

4

1 回答 1

0

MockAdapter的 README 文件说它可以使用正则表达式作为 url。

因此,您的代码应如下所示:

mock
    .onGet(/\/services\/api\/account\/.*?\/account-details/g)
    .reply(() => {
      return [200, accountDetails];
    });

https://github.com/ctimmerm/axios-mock-adapter/blob/59258dd1e78531853c24a4cf2ed002455f66ecbf/README.md?plain=1#L138

于 2022-01-10T08:35:33.477 回答