我正在使用Jasmine对AngularJS指令进行单元测试。
即使我在$compile
语句中注入beforeEach
,我也收到此错误:
Reference Error: can't find variable: $compile
describe('test', function() {
beforeEach(inject(function(_$compile_, _$rootScope_) {
$compile = _$compile_;
$rootScope = _$rootScope_;
}));
describe('testCase', function() {
var nlElement = angular.element('<div directive></div>');
var element = $compile(nlElement)($rootScope); // this is where the error is being thrown
$rootScope.$digest();
it(...)
});
});
我是否必须在describe
块中的第二个it
中包含这些语句?最终,我希望能够在每次测试之前注入所有这三个语句,但我正在尝试解决$compile
错误。
答案 0 :(得分:0)
事实证明,describe
块在beforeEach
语句之前执行,这对我来说是违反直觉的。另外,如果你想在测试之前初始化变量和指令(就像我在第二个describe
块中那样,那么将它包含在beforeEach
语句中,并在it
中测试你的断言块。
describe('test', function() {
describe('testCase', function() {
beforeEach(inject(function(_$compile_, _$rootScope_) {
$compile = _$compile_;
$rootScope = _$rootScope_;
}));
beforeEach(inject(function() {
var nlElement = angular.element('<div directive></div>');
var element = $compile(nlElement)($rootScope); // this is where the error is being thrown
$rootScope.$digest();
}));
it(...)
});
});