我想模拟我的SPA完成的一些API调用。因此,我正在使用cypress.JS,并通过以下测试检查了如何执行此操作。
it("Then it works", () => {
axios.defaults.baseURL = 'http://localhost';
cy.server()
cy.route("GET", "http://localhost/users/", true)
axios.get("/users/").then(response => {
console.log("received response: " + response)
expect(response.body).to.equal(true)
}).catch(error => console.log(error))
})
不起作用,我收到错误消息:“从原点“ http://localhost/users/”到“ http://localhost:8080”处对XMLHttpRequest的访问已被CORS策略阻止:没有“ Access-Control-Allow-Origin”标头存在于请求的资源上。”
在测试过程中有什么方法可以防止此错误?我不明白为什么赛普拉斯会以可能发生此错误的方式来处理此简单测试。
答案 0 :(得分:1)
在您的cypress.json
中将chromeWebSecurity
设置为false
。
{
"chromeWebSecurity": false
}
从赛普拉斯文档here起,将chromeWebSecurity
设置为false
可以执行以下操作:
答案 1 :(得分:0)
问题是,我用基本URL localhost:8080配置了cypress
{
"baseUrl": "http://localhost:8080"
}
但在测试中仅使用了本地主机
it("Then it works", () => {
cy.server()
cy.route({
method: 'GET',
url: '/users/1',
response: true
})
axios.get("http://localhost:8080/users/1").then(response => {
console.log("received response: " + response)
expect(response.body).to.equal(true)
}).catch(error => console.log(error))
})
测试仍然无法进行,但是我的第一个问题得到了解答。发生错误是因为缺少端口。找到其他问题的解决方案时,我将对此进行更新。