Reading fixture is throwing error TypeError: Converting circular structure to JSON
Reading fixture is throwing error TypeError: Converting circular structure to JSON
我正在使用 React JS 构建 Web 应用程序。我正在为我的应用程序使用 Cypress 编写集成测试。在我的测试中,我正在从夹具文件中读取 JSON 数据。当我读取夹具文件时,它抛出以下错误。
TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Window'
--- property 'window' closes the circle
这是我的代码。
describe('Login', () => {
it('renders login form render the form controls', () => {
it('redirects to dashboard page when login is successful', () => {
// TODO: use fixture
// TODO: give alias
// TODO: mock me endpoint
const accessToken = 'fake access token'
const loginResponseJson = cy.fixture('superadmin-login.json');
})
})
这是我的 superadmin-login.json
夹具文件。
{
"accessToken": "fake access token",
"token": {
"id": "c09dd33fbdcbf780ddb4d784002f1b4c8413cc298f2465f5f3e3c3481b2aa7f586d14f04af163a1c",
"user_id": 31,
"client_id": 1,
"name": "User Access Token",
"scopes": [],
"revoked": false,
"created_at": "2022-05-24 20:39:48",
"updated_at": "2022-05-24 20:39:48",
"expires_at": "2025-05-24T20:39:48.000000Z"
}
}
我的代码有什么问题,我该如何解决?
读取 fixture 文件是一个异步操作,所以这应该适合你
cy.fixture('superadmin-login.json').then(loginResponseJson => {
const token = loginResponseJson.token;
...
})
请注意,Cypress 有自己的 a-synchronicity 类型(command-queue 模型),因此您也不能这样做
// won't work
const loginResponseJson = await cy.fixture('superadmin-login.json')
如果您想最大程度地减少 .then()
回调,您可以 require
将它放在规范的顶部。
const loginResponseJson = require('./cypress/fixtures/superadmin-login.json')
首先加载夹具然后拦截请求和return模拟响应工作
cy.fixture('car/cars.json').then(cars => {
cy.intercept('GET', '/api/cars?limit=100', cars)
})
我正在使用 React JS 构建 Web 应用程序。我正在为我的应用程序使用 Cypress 编写集成测试。在我的测试中,我正在从夹具文件中读取 JSON 数据。当我读取夹具文件时,它抛出以下错误。
TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Window'
--- property 'window' closes the circle
这是我的代码。
describe('Login', () => {
it('renders login form render the form controls', () => {
it('redirects to dashboard page when login is successful', () => {
// TODO: use fixture
// TODO: give alias
// TODO: mock me endpoint
const accessToken = 'fake access token'
const loginResponseJson = cy.fixture('superadmin-login.json');
})
})
这是我的 superadmin-login.json
夹具文件。
{
"accessToken": "fake access token",
"token": {
"id": "c09dd33fbdcbf780ddb4d784002f1b4c8413cc298f2465f5f3e3c3481b2aa7f586d14f04af163a1c",
"user_id": 31,
"client_id": 1,
"name": "User Access Token",
"scopes": [],
"revoked": false,
"created_at": "2022-05-24 20:39:48",
"updated_at": "2022-05-24 20:39:48",
"expires_at": "2025-05-24T20:39:48.000000Z"
}
}
我的代码有什么问题,我该如何解决?
读取 fixture 文件是一个异步操作,所以这应该适合你
cy.fixture('superadmin-login.json').then(loginResponseJson => {
const token = loginResponseJson.token;
...
})
请注意,Cypress 有自己的 a-synchronicity 类型(command-queue 模型),因此您也不能这样做
// won't work
const loginResponseJson = await cy.fixture('superadmin-login.json')
如果您想最大程度地减少 .then()
回调,您可以 require
将它放在规范的顶部。
const loginResponseJson = require('./cypress/fixtures/superadmin-login.json')
首先加载夹具然后拦截请求和return模拟响应工作
cy.fixture('car/cars.json').then(cars => {
cy.intercept('GET', '/api/cars?limit=100', cars)
})