3

私はAngularが初めてです。私のアプリを TDD スタイルで書こうとしています。私がやろうとしているのは、クライアント数を表示するためのテストを書くことです。このテストを最初に (注入を行わずに) 合格させるには、マークアップを HTML に追加するだけ<h1>Clients (3)</h1>です。

クライアント数が 2 の場合と 0 の場合のチェックを追加して、このテスト ケースをさらに拡張したいと考えていますが、そのためには E2E テスト内のスコープを直接変更する必要があり、その方法がわかりません。inject is not defined以下のように、試してみると得られます。

これをテストする適切な方法は何ですか?

シナリオ.js

describe('myApp', function() {

  describe('Client list view', function() {

    beforeEach(function() {
      browser().navigateTo('/');
    });

    // PASSES
    it('should display a list of clients', function() {
      expect(repeater('.clients li').count()).toBe(3);
    });

    // !!! TEST FAILS !!!
    it('should display the number of clients', inject(function($scope) {
      expect(element('h1').text()).toEqual('Clients (3)');
    }));
  });
});

controllers/client-list-controller.js

'use strict';

angular.module('forecastingApp').controller('ClientListCtrl', function($scope) {
  $scope.clients = [
    'Joe J.',
    'Brad C.',
    'Some Dude'
  ];
});
4

2 に答える 2

5

今のところ、できません。injectJasmine を使用した単体テストで使用できますが、e2e テスト用ではありません。

于 2013-08-01T21:47:09.350 に答える
0

テスト用の html を見せていただけませんか? あなたのhtmlのスクリプトファイルのシーケンスを知りたいです。はい。シナリオ ランナーは、http または https を使用して実行する必要があります。または、別の html で e2e を実行することもできます。形式は次のようになります。

<html lang="en">
<head>
<title>End2end Test Runner</title>
<meta charset="utf-8">
<base href="../..">
<script src="app/lib/angular/angular-scenario.js" ng-autotest></script>
<script src="test/e2e/scenarios.js"></script>
</head>
<body>
</body>
</html>

注意、このファイル「angular-scenario.js」を参照する必要があります

于 2014-03-07T05:51:21.137 に答える