サイプレス先端:spec関数で


あなたのテストの繰り返しのコードの束があると想像しましょう.
it('should do this thing', () => {
  // ...
  cy.get('#thisElement')
    .then($el => {
      // some unusual hackery here
    })
  // ...
})
it('should do that thing', () => {
  // ...
  cy.get('#thatElement')
    .then($el => {
      // some unusual hackery here
    })
  // ...
})
it('should do another thing', () => {
  // ...
  cy.get('#anotherElement')
    .then($el => {
      // some unusual hackery here
    })
  // ...
})
どうしたんだろう.あなたはすぐにカスタムコマンドにこれを破るように誘惑される可能性があります.
it('should do this thing', () => {
  // ...
  cy.get('#thisElement')
    .doSomething()
  // ...
})
...しかし、それは必ずしも理由のいくつかの最良の解決策ではありません.代替案私はそれをspec関数で呼び出します.specファイルに含まれるhoisted関数の形式での抽象化です.
describe('some feature', () => {
  it('should do this thing', () => {
    // ...
    cy.get('#thisElement')
      .then(doSomething)
    // ...
  })
    // ...
})
function doSomething($el) {
  // some unusual hackery here
}
ここでは、in - spec関数を使いたいかもしれません.
  • カスタムコマンドへの抽象化のように、これはあなたのテストを非常に簡単に理由になりますが、単一の仕様でのみ必要な場合は、なぜコマンドを使用すると、プレーンJavaScriptを使用することができますか?
  • それは、それが邪魔になるように底から巻いています、しかし、それがスペックにあるので、あなたはデバッグ、アップデートまたはリファクタリングに必要であるイベントでアクセスするのがより簡単です.
  • Specの外でこの機能を必要とするならば、それは最初に仕様仕様の関数としてプロトタイプを作るのが簡単です.それから、あなたが望む方法を働いているとき、あなたはそれをコマンドに変えることができます.