【发布时间】:2016-01-19 16:39:38
【问题描述】:
我目前正在使用 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是 IIFE 的本地变量,但测试expect(app).toEqual(angular.module("myApp"));对我来说毫无意义。 -
为什么还需要变量
app? -
我使用变量
app来创建自定义指令和控制器。 -
@charlietfl 一些写得很糟糕的例子,说明如何结合使用 angular show
var app和app.controller ...、app.factory ...,不幸的是人们不知道这是一种反模式。 -
@Claies 我最近正在阅读它,但我在这里的意图是我所有的控制器、指令都包含在 IIFE 中。因此,对于一个简短的演示,我使用了变量 app。
标签: angularjs karma-jasmine iife