我正在尝试为AngularJS应用程序编写单元测试。下面是一个非常标准的测试模板,工作正常:
describe('Controller: MainCtrl', function () {
var MainCtrl, scope;
beforeEach(function() { // <-- what if I remove this
module('watcomApp');
inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
MainCtrl = $controller('MainCtrl', {
$scope: scope,
});
});
}); // <-- and this
it('some spec', function () {
expect(scope.data).toEqual('something');
});
});
但是,如果我尝试重用控制器的当前状态并删除 beforeEach:
describe('Controller: MainCtrl', function () {
var MainCtrl, scope;
module('watcomApp');
inject(function ($controller, $rootScope) {
...
它停止工作,因为 scope.data 变得未定义。 问题是:范围会发生什么变化?我希望它能在规格之间持续存在,因为它是全球性的。