我尝试使用Cypress.io cy.route()来管理网络请求的行为。 写了一个存根来替换应用程序的网络行为以测试UI。
预期结果是后端返回JSON格式的字符串型响应。 引号或双引号不应出现在括号之外。
预期结果的示例:
{"mockdata":"mock"}
但是,我的应用在测试过程中始终返回对象类型的响应, 例如
{mockdata:"mock"}
如何使Mock API返回字符串类型的响应?谢谢。
下面是我的测试代码:
context('mock API', function () {
before(function () {
cy.server()
cy.route({
method: 'POST',
url: '/category/menu',
response: '{"mockdata":"mock"}'
}).as('rootBlock')
}
it('use mock API', function () {
cy.visit('/')
cy.wait('@rootBlock')
})
}
以及使用JQuery的我的APP的示例代码:
$.ajax({
url: '/category/menu',
type: 'POST',
success: function (json) {
console.log(typeof json)
// Expect String to be returned
// but it always return as Object during a cypress test
var jsonData = $.parseJSON(json).mockdata
// throwing errors...
}
});
我的系统是:Win7 x64
node.js:v10.14.1
Cypress.io:v3.4.1
答案 0 :(得分:0)
您的模拟尝试将您的响应自动转换为JSON对象(应该是这样)。
如果要返回字符串,则应将对象字符串化:
response: JSON.stringify({"mockdata":"mock"})
应该可以。
此外,您还可以添加带有以下内容的标头属性:
header: {
'Content-Type': 'text/html'
},
但在您的情况下不是强制性的
您也可以在此处查看文档: https://docs.cypress.io/api/commands/route.html