Cypress.ioテストでは、以下のように「example-spec」で記述された減算関数とテストを呼び出しています。これは正常に機能しています。しかし、サイプレステストの「/basetest.js」など、別のjsファイルに記述された同じ減算関数をどのように呼び出すのでしょうか。
describe ('Calling a function', function(){
it('Call the Subtract function and asert the calculation', function(){
cy
.wrap({sub: subValues})
.invoke('sub', 15, 8)
.should('eq', 7) // true
})
})
//関数を減算します:
const subValues = (a, b) => {
return a - b
}
から https://docs.cypress.io/api/cypress-api/custom-commands.html
これをsupport/commands.js
ファイルに入れます。
Cypress.Commands.add('subValues', (a, b) => { return a - b });
まだ存在しない場合は、これをsupport/index.js
ファイルに入れます(存在するはずです)。
import "./commands";
次のようにテストで呼び出します。
describe ('Calling a function', function(){
it('Call the Subtract function and asert the calculation', function(){
cy
.subValues(15, 8)
.should('eq', 7) // true
});
});
サイプレスには、デフォルトで(path to project)/support/index.js
にある外部ライブラリファイルが含まれています。
このファイルはすべてのテストファイルに含まれているため、ここに共有コードを配置できます。
index.js
に次のコードを使用して、support
フォルダーに他のファイルを含めることもできます。
import './MySupportFile.js'
外部テストファイルを含める場合、単純な関数定義は引き継がれないようです。理由はよくわかりません。 cy
オブジェクトへの関数の挿入は私のために働いた:
cy.myFunction = greeting => {
console.log(greeting);
};
cy.myNamespace = {};
cy.myNamespace.myNamespacedFunction = () => {
console.log("hi");
};
cy
オブジェクト内のこれらの関数は、所有している/integration
ファイルに引き継がれます。
cypress/support/
に新しいファイルを追加します。例: cypress/support/functions.js
cy.myproject = {
makeUniqueUsername: () => {
return 'cypress-test-' + Cypress.moment().format("YYMMDD-HHmmss");
}
}
cypress/support/index.js
に参照を追加して含めます
import './functions'
次に、任意のテストから関数を呼び出します
describe('registration', function() {
it('can register', function() {
let username = cy.myproject.makeUniqueUsername();
cy.visit('/register');
cy.get('#username').type(username);
// etc...
})
});
プレーン関数とヒノキの「カスタムコマンド」を検討するときは、 ヒノキのドキュメントでは、単一の仕様ファイルでカスタムコマンドが不要なプレーン関数を推奨しています に注意してください。ただし、そうすべきではないことに同意しません。 DRYテストコード。
これに私を連れて行ってくれた他の答えに感謝します。主な追加は、それを段階的に行い、カスタム関数をグローバルcy.*
名前空間から除外することです。