我發現 Cypress 中的 typescript 支持有點令人困惑。我能夠很容易地為我的自定義命令實作正確的輸入。但是,我正在努力讓它與插件一起使用。
例如,如果我有這個簡單的plugins/index.ts檔案。
import { generateEmail } from "./my-temp-mail-file"
const pluginConfig = async (on, config) => {
on("task", {
generateEmail: async () => {
const email = await generateEmail()
return email
}
})
}
export default pluginConfig
on, config總是未定義的型別(即Parameter 'on' implicitly has an 'any' type)。即使我包含賽普拉斯建議的型別宣告也無濟于事。
當我嘗試使用我的自定義插件時,then方法中可用的回傳引數始終是unknown.
例如email總是未知的`。
cy.task("generateEmail").then(email => {
///...do something
})
目前我正在匯入我的型別,這可行但有點煩人。
cy.task("generateEmail").then((email: string) => {
///...do something
})
有沒有辦法像使用命令一樣自動讓它們在那里?
uj5u.com熱心網友回復:
on, config您可以通過 hovering查看型別Cypress.PluginConfig,但不可否認,注釋應該開始了。
如果generateEmail()有回傳型別,將在任務中推斷
/**
* @type {Cypress.PluginConfig}
*/
export default (on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) => {
on("task", {
generateEmail: async () => {
const email = await generateEmail() // type shows "const email: string"
return email
}
})
}
function generateEmail(): Promise<string> {
return Promise.resolve('z')
}
要在測驗中鍵入任務回傳值,請將其添加到插件
declare global {
namespace Cypress {
interface Chainable {
task(event: 'generateEmail'): Chainable<string>;
}
}
}
cy.task('generateEmail').then(email => { // type shows "(parameter) email: string"
...
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/481723.html
上一篇:Django測驗單元登錄用戶
