アプリケーションのエンド ツー エンド テストを作成しようとしています。基本的なテストを実行したところ、正常に動作しています。
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 ファイルをビュー フォルダーにコピーすると問題が解決する ビュー フォルダーにコピーせずにこれを達成するにはどうすればよいですか?