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-mocks.js 旁边,如果您使用的是 angular-seed)。最后,您将其包含在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 回答