Reading fixture抛出错误TypeError:将圆形结构转换为JSON



我正在使用React JS构建一个web应用程序。我正在使用Cypress为我的应用程序编写集成测试。在我的测试中,我从fixture文件读取JSON数据。当我读取fixture文件时,它抛出以下错误:

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有它自己的同步类型(命令队列模型),所以你也不能这样做

// won't work
const loginResponseJson = await cy.fixture('superadmin-login.json')

如果你想最小化.then()回调,你可以在规格的顶部require它。

const loginResponseJson = require('./cypress/fixtures/superadmin-login.json')

首先加载fixture,然后拦截请求并返回模拟响应。

cy.fixture('car/cars.json').then(cars => {
cy.intercept('GET', '/api/cars?limit=100', cars)
})