0

ディレクティブのテストを書きたいです。

アプリ内

requiresDependencies = ["someModule1","someModule2"];
var app = angular.module('app', requiresDependencies);

テスト中

describe("Logon Hours Editor", function ()
{
    var compile, rootScope;
    var element;

    beforeEach(module('app'));

    beforeEach(inject(['$compile', '$rootScope', function ($compile, $rootScope)
    {
        compile = $compile;
        rootScope = $rootScope;
        element = $compile('some html')($rootScope);
    } ]
    )); ....

私のディレクティブはメインユニットに関連しており、 「requiresDependencies」に記載されている他のテストモジュール(someModule1、someModule2)は後で番号と名前を変更できるため、接続したくありません。彼の依存関係なしでのみ接続するにはどうすればよいですか?

4

1 に答える 1

0

あなたはそれらを嘲笑しなければなりません。たとえば、mocksモックしたいサービスまたはディレクティブを含む ad というモジュールを作成できます。次に、それをロードするとbeforeEach(module('mocks'));、テスト スイートからサービスへの呼び出しでmocksダミーの実装が使用されます。

/test/lib/my-mocks.js(angular-seed を使用している場合は、angular-mocks.js の隣) のように、このモック モジュールをテスト フォルダーに配置できます。最後に、次のように含めますkarma.conf.js

files = [
  'app/lib/jquery/jquery-1.9.1.js',
  JASMINE,
  JASMINE_ADAPTER,
  'test/lib/jasmine-jquery.js',
  'app/lib/angular/angular.js',
  ...
  'test/lib/myproject/my-mocks.js',
   ...
];

別のアプローチは、ジャスミン スパイを使用することです。例えば:

 spyOn($location, 'absUrl').andCallFake(function (p) {
     return 'http://localhost/app/index.html#/this/is/my/route';
 });
于 2013-07-17T12:48:13.623 に答える