0

アプリケーションのエンド ツー エンド テストを作成しようとしています。基本的なテストを実行したところ、正常に動作しています。

it('should not show any criterias when the application loads initially', 
    function() {
        expect(repeater('.new-criteria').count()).toBe(0);
});

上記のテストは正しく機能します。

今、ng-repeat要素にディレクティブを使用しています。この繰り返しの配列は、ボタンがクリックされるたびに 1 カウント増加します。したがって、次のテストを作成しました。

it('should show one criteria when the user adds a criteria', function() {
    element('.add-criteria').click();
    expect(repeater('.new-criteria').count()).toBe(1);
});

私は runner.html を使用しています (これは AngularJS エンド ツー エンド チュートリアルにあります)。ページを読み込むと、最初のテストは成功です。ただし、2 番目のテストでは次のエラーが発生します。

Selector .add-criteria did not match any elements.

add-criteria次のようなクラスのボタンがあります。

    <button type="button" class="btn btn-inverse add-criteria" ng-click="addNewCriteria()">
        <i class="icon-plus-sign icon-white"></i> 
        Add a new criteria
    </button>

それでも、テストは失敗します。削除.add-criteriaして に置き換えて.new-criteriaも、同じエラーが発生します。どういうわけか、repeater()正しい要素を取得できますがelement()、セレクターに一致する要素が見つからなかったと報告されます。

何がうまくいかないのですか?

編集: Node / Express で AngularJS を使用していることをここに追加したいと思います。私のディレクトリ構造はangular-express-seedのものと同じです。CSS および JS ファイルがパブリック フォルダーに配置され、HTML ページがビュー フォルダーに配置されているために、この問題が発生することがわかりました。CSS および JS ファイルをビュー フォルダーにコピーすると問題が解決する ビュー フォルダーにコピーせずにこれを達成するにはどうすればよいですか?

4

1 に答える 1

0

Angular Express Seedはかなり長い間更新されていません。Github ページの問題 #9が示すように、現在のバージョンのangular-seedにあるテスト機能はありません。そのため、実行しようとしているテストがどこから来ているのかわかりません。

プロジェクトのクライアント側の AngularJS 部分をサーバー側の Node.js/Express 部分から分離することをお勧めします。開発中は、公式のangular-seedプロジェクトを使用してください。これには、ローカルでの開発とテスト用に事前構成された単純な Node.js サーバーが含まれています。それは物事を大幅に簡素化します。

AngularJS を本番環境に移行する場合は、Apache、nginx、Express Node.js サーバーのいずれか便利なオプションを使用して、必要なファイルのみを提供します。あなたの選択。それでも Express ソリューションを使用することにした場合は、Google/SO で簡単に検索すると、静的ファイルの提供と index.html へのリダイレクトに関する多数のリソースが提供されます。それは以前に議論されており、解決策はそれほど複雑ではありません。

この回答は明らかにあなたが抱えていると思われる問題を解決するものではありませんが、あなたが提供したものよりも多くの情報が必要です. 開発中の環境をどのように構築したか (angular-express-seed にテストが含まれていない場合、どのようにテストを実行していますか?) を明確にすると、発生していると思われるルーティングの問題に対する解決策を提供できる可能性があります。ディレクトリ構造、app.jsコードなどが参考になります。

于 2013-04-16T06:57:57.923 に答える