如何在 cy.intercept() 中的 glob 上使用特定的 url?

How to use a specific url over a glob in cy.intercept()?

我有两个拦截:

cy.intercept(
  'GET',
  '**/foo/*',
 {
  fixture: 'foo.json'
 }
)

cy.intercept(
  'GET',
  '**/foo/bar',
 {
  fixture: 'bar.json'
 }
)

我总是从第一次拦截中得到响应。更改它们在代码中的顺序并不重要。我做错了什么?

如何通过 glob 获得特定 url 的响应?

您可以根据响应有条件地 return 不同的灯具,using req.reply()

cy.intercept(
  'GET',
  '**/foo/*',
  (req) => {
    req.reply({
      status: 200,
      fixture: req.url.endsWith('/bar') ? 'bar.json' : 'foo.json'
    });
  });

在上面,我们正在做一个简单的三元来确定是 return bar.json 还是 foo.json。如果有更复杂的逻辑,您可以将该部分提取到 req.reply().

以上的常量