angular 中使用 IIFE 的单元测试抛出引用错误?

Unit testing in angular using IIFE throw a reference error?

我目前正在使用 IIFE(立即调用的函数表达式)为驱动程序脚本编写一个简单的测试用例。这是我的驱动程序脚本。

driver.js

(function() {
"use strict";

var app = angular
    .module("myApp", [
        "ui.bootstrap",
        "ui.sortable"
    ]);
}());

这是我的规格 driver.spec.js

describe("application configuration tool driver", function() {
 it("should create an angular module named myTest", function() {
    expect(app).toEqual(angular.module("myApp"));
 });
});

当我 运行 我的规范使用 IIFE 时。我收到 ReferenceError: app is not defined.

如果我运行没有IIFE的驱动脚本:

var app = angular
    .module("myApp", [
        "ui.bootstrap",
        "ui.sortable"
    ]);

我的规范通过了。对使用 IIFE 通过规范有什么想法吗?

您可以将 app 移回外部范围(当然,如果您可以选择的话):

var app;
(function(app) {
    "use strict";

    app = angular
        .module("myApp", [
            "ui.bootstrap",
            "ui.sortable"
        ]);
}(app));