cy.route的响应选项中的JSON.stringify不起作用

时间:2019-05-03 19:29:04

标签: reactjs integration-testing cypress

我目前正在Cypress上为用react和redux和redux-saga编写的应用程序编写测试。对于我的测试之一,我试图对请求进行存根并返回一个响应,该响应期望代码应为JSON的“字符串化”数组,以便稍后可以对其进行解析。

我尝试使用JSON.stringify([desiredResponse])在cy.route()命令中指定响应,但这种方法不起作用,响应一直被Cypress或其他中间件解析,然后再进入传奇。

我也尝试过在onResponse选项中拦截响应,但是在我看来,响应交付后就正在执行(不确定这一点,仅进行了一些模糊测试)

// This is how my cy.route() config looks like
cy.route({
  method: 'POST',
  url: 'someUrl',
  response: JSON.stringify([myResponse]),
});

在我的传奇故事中:

// I call the url via axios and immediately after I try to parse it 
try {
  const parsed = JSON.parse(response.data);
} catch (err) {
  const parsed = [];
}

我希望我在传奇故事中的回答像是:“ [myResponse]”,但我得到了原始数组

1 个答案:

答案 0 :(得分:0)

出于好奇:您是否尝试过将[myResponse]包装到JSON.stringify()中?

类似

cy.route({
  method: 'POST',
  url: 'someUrl',
  response: [myResponse],
});

无论如何:在我的应用中,根据您的实际情况,我与您的代码的唯一区别是我利用了Cypress fixtures

您可以使用简化的代码共享一个简单的GitHub存储库吗?