2

angularJS アプリの Karma で e2e テストを作成しようとしています。フォームへの入力と投稿を自動化しました。結果はオブジェクトである必要があり、カスタム サービス「UserService」を呼び出すことでアクセスできます (少なくともアプリ コードでは)。しかし、テスト コード内でこのサービスにアクセスするにはどうすればよいでしょうか。私は書くことができるようにしたいと思います:

expect(UserService.parent.firstname).toEqual('Jack');

ラインでサービスを入れてみた

beforeEach(module('App'));

e2e テスト コードで。しかし、私が得るのは「Uncaught ReferenceError: module is not defined」だけです。

アプリ モジュールは「アプリ」として定義されます。

var myApp = angular.module('App', ['App.filters', 'App.services'])....

サービスは「App」モジュールの一部として定義されています。

myApp.factory('UserService', ['webStorage', function(webStorage) {...

アプリとサービスが機能することは既にわかっているので、ここに定義を含めました。テスト内でサービスを使用するにはどうすればよいですか? 私はそれを嘲笑したくありません。ただそれを使用してください。

4

1 に答える 1

1

inject() を使用して beforeEach() ブロックに追加するだけです。

これはうまくいくはずです:

var uService;

beforeEach(inject(function (UserService) {
    uService = UsersService;
}));

そして、あなたはそれを次のように使用しますuService.parent.firstname

また、メインアプリのモジュールの依存関係があることがわかりますがApp.services、サービスを App.services モジュールではなく、メインアプリのモジュールの一部として定義します。故意か偶然か?

于 2013-08-05T13:25:29.677 に答える