我想为该指令编写测试。
在应用
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),因为以后可以更改它们的数字和名称。 如何在没有依赖项的情况下进行连接?
答案 0 :(得分:0)
你必须嘲笑他们。例如,您可以使用带有要模拟的服务或指令的d创建名为mocks
的模块。然后使用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';
});