2016-10-18 10 views
1

私のアプリは現在のセッションに関する情報をlocalStorageに保存します。したがって、すべてのテストファイルの各テストの前または後にlocalStorageをクリアするテストが必要です。各テストファイルではなく、beforeEachまたはafterEachコールバックをグローバルに定義する方法はありますか?ember qunitテストのためのグローバルbeforeEach/afterEach

答えて

2

ほぼ同じ理由で、ember-qunitのmodulemoduleFor、およびmoduleForComponentをラップしました。そしてember-qunitの代わりにそれらのラッパーをインポートしています。

もう1つの提案は、localStorageをサービスでラップすることです。このサービスを除いて、絶対にlocalStorageにアクセスしないでください。だから、あなたはテストでそれの模擬実装を使用することができます。

更新日:それが実現されている方法

import { moduleFor, moduleForModel, test, only, setResolver } from 'ember-qunit'; 
import { moduleForComponent as qunitModuleForComponent } from 'ember-qunit'; 

function moduleForComponent(name, description, callbacks) { 
    //our implementation that wraps "qunitModuleForComponent" 
    //eg. init commonly used services vs. 
} 

export { 
    moduleFor, 
    moduleForComponent, 
    moduleForModel, 
    test, 
    only, 
    setResolver 
}; 

長所:

  • は、新しいメソッドを追加するためのコードの重複
  • 一元化ユニットテスト管理
  • 簡単のを防ぎカスタムニーズのために、 moduleForValidatableComponentmoduleForLocalStorage

短所:など

  • 燃えさし-CLIは、それらがember-qunitをインポートするテストを生成します。開発者は、インポートステートメントをこれらのラッパーに変更する必要があります。時々忘れられてしまった。 (テストが失敗すると、開発者はインポートステートメントを変更する必要があることを覚えています)。
  • ラッピングは不要です。
+0

サービスを使ってlocalStorageをラップするヒントをありがとう。しかし、私はまだこの機能が私の現在の具体的な必要性を超えて便利になることができれば、ember-qunitのメソッドをラップすることに関してあなたが言及したものを好む。ラッピングがどのように機能するかを詳しく説明できますか? – Ernesto

+0

@Ernestoが更新されました – ykaragol

関連する問題