Angularjs 茉莉花。module()和inject()做什么?它们是如何连接的?

Angularjs 茉莉花。module()和inject()做什么?它们是如何连接的?,angularjs,jasmine,Angularjs,Jasmine,我写过包括以下模式的测试,但我不理解 describe("controllerName", function() { "use strict"; beforeEach(function() { module("moduleName"); inject(function(_serviceName_) { serviceName = _serviceName_; }); }); ... }

我写过包括以下模式的测试,但我不理解

describe("controllerName", function() {
    "use strict";

    beforeEach(function() {
        module("moduleName");

        inject(function(_serviceName_) {
            serviceName = _serviceName_;
        });
    });

    ...

});
调用
模块
函数的作用是什么?调用
inject
函数做什么?
inject
函数如何知道应该将服务注入到哪里


如果您能给我一个我能理解的解释,我会很高兴的。

我们需要加载包含模块,以便测试它<代码>模块是由
angular mocks.js
提供的函数。因此,使用模块名作为参数调用它将加载该模块

inject
angularmocks.js
提供给我们的另一种方法。它使我们能够访问文件中声明的各种依赖项。以您发布的代码为例,通过回调函数调用inject函数可以访问控制器/服务等所依赖的依赖项。只有在回调中,您才能将这些依赖项分配给某些变量,然后在测试中使用它们

由于需要对每个测试(即
it
块)执行此操作,因此对
模块
inject
函数的调用被放置在每个
块之前的
块中,就像在每个
it
块之前调用一样

另外,由于您调用了
inject
函数,因此它允许您访问
serviceName
依赖项,您将在测试中使用该依赖项。我们通常会给出一个服务名称,名称中用
\uuu
括起来。这只是为了用您在这些服务的测试中使用的变量来区分它们
$injector
在解析这些名称时,会剥离前导和尾随的
\uu

希望这能帮助您更好地理解您编写的测试


您可以阅读有关它的更多信息

我们需要加载包含模块,以便测试它<代码>模块
是由
angular mocks.js
提供的函数。因此,使用模块名作为参数调用它将加载该模块

inject
angularmocks.js
提供给我们的另一种方法。它使我们能够访问文件中声明的各种依赖项。以您发布的代码为例,通过回调函数调用inject函数可以访问控制器/服务等所依赖的依赖项。只有在回调中,您才能将这些依赖项分配给某些变量,然后在测试中使用它们

由于需要对每个测试(即
it
块)执行此操作,因此对
模块
inject
函数的调用被放置在每个
块之前的
块中,就像在每个
it
块之前调用一样

另外,由于您调用了
inject
函数,因此它允许您访问
serviceName
依赖项,您将在测试中使用该依赖项。我们通常会给出一个服务名称,名称中用
\uuu
括起来。这只是为了用您在这些服务的测试中使用的变量来区分它们
$injector
在解析这些名称时,会剥离前导和尾随的
\uu

希望这能帮助您更好地理解您编写的测试

你可以阅读更多关于它的内容