2

テスト用に ember-app-kit で提供されている api-stubs を利用しようとしています。

ブラウザでサイトを表示したり、ブラウザでアクセスしてテストを実行したりすると、スタブは正しく/tests機能します。

ただし、コマンド ラインから testem を使用して ( を実行してgrunt test:server) テストを実行すると、スタブ データが返されないため、テストは失敗します。

ここで問題を示す最小限の例を見つけることができます: https://github.com/tomclose/minimal_eak_test_stub_problem、最新バージョンの ember-app-kit から作成されました。

私は何を間違っていますか?

4

2 に答える 2

2

rstudner が irc で私に連絡し、この問題の解決を手伝ってくれました。grunt server基本的な考え方は、実行を維持し、config/environments/test.jsこのサーバーにヒットするようにテスト API 要求を構成するために使用することです。

うまくいったのは次のとおりです。

  1. 構成可能なホストを指すように変更app/adapters/application.jsします。

    export default DS.RESTAdapter.extend({
      namespace: 'api',
      host: window.ENV.host
    });
    
  2. 編集config/environments/test.jsして、次のように実行されているアプリのインスタンスをヒットするようにテストを構成しますgrunt server

    window.ENV.host = 'http://localhost:8000'
    
  3. その後、CORS の問題が発生します。これらを解決するには、依存関係"cors": "2.2.0",を追加してpackage.jsonから実行しますnpm install。それで ..

  4. 8tasks/express-server.js行目に次を追加します。

    var cors = require('cors');
    

    25行目に次を追加します。

    app.use(cors());
    

更新された作業バージョンはhttps://github.com/tomclose/minimal_eak_test_stub_problemにあります。

rstudner はまたsinon.js、このアプローチに従うのではなく、実際には 100% の確率でサーバーを偽造するために使用していると述べました (そして、一部のフルスタック テストには Selenium を使用します)。

于 2014-04-17T11:59:15.127 に答える