web-dev-qa-db-ja.com

サイプレステストとは別のファイルに記述された関数をどのように呼び出すのですか?

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 
}
4
soccerway

から 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        
    });
});
6
Brendan

サイプレスには、デフォルトで(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ファイルに引き継がれます。

2
Joshua Wade

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.*名前空間から除外することです。

1
Tim Abell