使用beforeEach在Angularjs中进行依赖注入(inject(function(...){..}));

时间:2016-07-26 12:07:21

标签: angularjs dependency-injection jasmine

使用Jasmine查看一些JS单元测试,在一个describe-suite中我找到了以下代码:

@"\\Network\\ExampleFolder"

在内部描述中,变量describe("suiteName", function() { var $controller; beforeEach(inject(function(_$controller_) { $controller = _$controller_; })); describe(....); describe(....); }); 在某些规范$controller中被用于“绑定”控制器字段到引用:

it

我假设$controller('controllerUniqueName', { controllerField1: reference1, controllerField2: reference2, ... } 正在进行一些依赖注入,将inject(..)注入全局变量_$controller_,而$controller只是在每个规范{{1}之前执行此操作在随后的每个描述套件中。

有人可以解释依赖注入是如何解决的吗?

特别是beforeEach等于作业it

编辑1:如果我删除了注入块,则单元测试失败并显示消息_$controller_

**编辑2:**如果我将$controller = _$controller_;更改为TypeError: $controller is not a function单元测试失败并显示消息_controller_

1 个答案:

答案 0 :(得分:1)

_$controller_等于$controller service instance

Angular进样器的

Underscored服务别名是supported,以使这种模式成为可能:

var $controller;
...
$controller = _$controller_;

如果加载的模块中不存在something服务,则会引发[$injector:unpr] Unknown provider: $somethingProvider <- $something错误。