我注意到X-CSRFToken标题在测试之间被删除,对于从被测应用程序触发的所有 XHR 请求。我不确定是否保留此标头,因为我已经通过以下方式保留了 CookiesCypress.Cookies.preserveOnce('sessionid', 'csrftoken')
因此,我想到将自定义标头附加X-CSRFToken到来自应用程序的所有 XHR 请求。这是我使用的脚本,我csrftoken从 cookie 中获取并设置为自定义标头。
cy.server({
onAnyRequest: function(route, proxy) {
proxy.xhr.setRequestHeader('X-CSRFToken', cy.getCookie('csrftoken'));
}
})
Run Code Online (Sandbox Code Playgroud)
在这里,我收到以下错误,
Argument of type '{ onAnyRequest: (route: any, proxy: any) => void; }' is not assignable to parameter of type 'Partial<ServerOptions>'.
Object literal may only specify known properties, and 'onAnyRequest' does not exist in type 'Partial<ServerOptions>'.
Run Code Online (Sandbox Code Playgroud)
我期待这种方法的任何有效解决方案或更好的解决方案。
我使用 Cypress 和 Javascript 规范,最近改用 Typescript。在使用 Fixtures 时,我在 Javascript 中使用了以下方法;但是,使用 Typescript 我面临一些困难。
夹具 JSON 文件:
我的夹具文件在/cypress/fixtures/sql_queries.json
{
"query_1": "SELECT * FROM TABLE_1",
"query_2": "SELECT * FROM TABLE_2",
}
Run Code Online (Sandbox Code Playgroud)
前:
before('Load data to fixture', () => {
cy.fixture('sql_queries')
.as('sqlQueries')
})
Run Code Online (Sandbox Code Playgroud)
测试规格:
我在下面的示例测试中使用加载的夹具文件,
it('Test something', () => {
cy.get('@sqlQueries')
.then((queries) => {
cy.log(queries.query_1)
})
})
Run Code Online (Sandbox Code Playgroud)
问题:
我收到的错误是Property 'query_1' does not exist on type 'JQuery<HTMLElement>
任何帮助,将不胜感激。