0

Ember アプリの統合/承認テストを実行しようとしています。具体的には、ユーザー認証 (ログイン フォームの送信など) と、認証されたユーザーを必要とする保護されたページ/状態をテストしています。

私のアプリに関する一般的な注意事項:

3 つの問題があります。

1. オーセンティケータとエフェメラル ストレージの工夫

ember-simple-auth API からは、テストにエフェメラル ストレージを使用することを指します。私はそうしました、このように。ただし、セッションはまだローカル ストレージに保存されているようです。各テストで実行しないとlocalStorage.clear()、最初のテストの後に各テストを実行するときにログインしたままになるため、セットアップ/ティアダウン テストが失敗します。

アプリで Devise オーセンティケーターを使用している場合、各テスト間でセッションをローカル ストレージに保存しないようにすることはできますか?

2. 複数の受け入れテスト

複数のユーザーにログインしようとするとtest()、テストがスピンオフして無限ループになります。最初のテストはパスしますが、2 番目のテストがログイン フォームを送信すると、テスト スイート全体が停止して再起動します。

統合テスト #1

App = null

module('Acceptance - Page #1',
  setup: ->
    App = startApp()

  teardown: ->
    Ember.run(App, 'destroy')
)

test('page #1 behind authentication', ->
  expect(1)

  visit('/page-1')
  fillIn('input#identification', 'foo@bar.com')
  fillIn('input#password', 'password')
  click('button[type="submit"]')
  andThen(->
    equal(true, true) # This test works fine
  )
)

統合テスト #2

App = null

module('Acceptance - Page #2',
  setup: ->
    App = startApp()

  teardown: ->
    Ember.run(App, 'destroy')
)

test('page #2 behind authentication', ->
  expect(1)

  visit('/page-2')
  fillIn('input#identification', 'foo@bar.com')
  fillIn('input#password', 'password')
  click('button[type="submit"]')
  andThen(->
    equal(true, true) # Never runs, tests start over, infinite loop begins
  )
)

3. EAK api-stubs & Testem

EAK の api- stubs は Testem で使用できないようです。そのため、これらの受け入れテストの「ログイン」プロセスをコマンド ライン/Testem 経由で実行すると失敗します。

sinon.js をセットアップしようとしましたが、上記の問題により、実際に正しく機能しているかどうかを判断できませんでした。ember-simple-auth を使用してユーザーのログインを正常にスタブ化する最良の方法は何ですか? Testem に EAK の API スタブを使用することは可能ですか?

4

2 に答える 2

0

@marcoow と他のいくつかの SO の質問と GitHub の問題の助けを借りて、すべての問題を解決できました。

1. オーセンティケータとエフェメラル ストレージの工夫

コードで古い API オプションを使用していました。新しい API のstoreFactoryオプションを使用するように更新すると、セッションのlocalStorage問題が解決しました。

#  app/initializers/simple-auth.coffee
if Ember.testing == true
  options = Ember.merge({ storeFactory: 'session-store:ephemeral' }, options)

2. 複数の受け入れテスト

これは、私がロードしていたfastclickという別のライブラリに関連していることが判明しました。非テスト環境でのみこのライブラリをロードするようにインデックス ファイルを更新した後、フォーム送信/無限ループの問題はなくなりました。

// app/index.html
<!-- @if tests=false -->
  <script src="/vendor/emberjs-touch/lib/ember-fastclick.js"></script>
<!-- @endif -->

3. EAK api-stubs & Testem

StackOverflow で、私と同様の問題に直面している他の人を見つけました。彼らの質問は最終的に回答/解決され、私自身の問題を解決するのに役立ちました. この GH issueのコメントに、この問題の回避策へのリンクがあります。例はこちら

于 2014-04-17T23:30:39.300 に答える