最后我得到了一个角度控制器的业力测试。但是,如果我尝试使用另一个控制器执行几乎相同的测试,则不能使用错误消息:Error: [ng:areq] Argument 'Test2Controller' is not a function, got undefined
工作测试:
describe('TestController: - ', function() {
beforeEach(module('myApp'));
var scope, $controller, httpBackend;
beforeEach(inject(function ($rootScope, _$controller_, $httpBackend) {
scope = $rootScope.$new();
httpBackend = $httpBackend;
$controller = _$controller_;
}));
afterEach(function () {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
describe('version testing; -', function() {
it("tests the version ", function() {
httpBackend.whenGET('url').respond(200, {"meta":{"apiVersion":"0.1","code":200,"errors":null}});
var $scope = {};
var controller = $controller('TestController', { $scope: $scope });
httpBackend.flush();
expect($scope.version.meta.apiVersion).toEqual('0.1');
expect($scope.version1).toEqual('1');
})
})
});
每个人都在这里工作得很好。但是这个没有:
describe('Test2Controller: - ', function() {
beforeEach(module('myApp'));
var scope, $controller, httpBackend;
beforeEach(inject(function ($rootScope, _$controller_, $httpBackend) {
scope = $rootScope.$new();
httpBackend = $httpBackend;
$controller = _$controller_;
}));
afterEach(function () {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
describe('test 2 testing; -', function() {
it("tests the test2 ", function() {
httpBackend.whenGET('url').respond(200, {"meta":{"apiVersion":"0.1","code":200,"errors":null}});
var $scope = {};
var controller = $controller('Test2Controller', { $scope: $scope });
httpBackend.flush();
expect($scope.testVal).toEqual('Test Value');
})
})
});
我还在karma配置中注册了测试文件,但它只适用于第一个。如果没有测试环境(我的意思是我的纯角应用程序),每个控制器的一切都工作正常。我做错了什么?
答案 0 :(得分:0)
我想知道错误消息是否说实话:至少在这种情况下,没有'Test2Controller'。也许它被命名为别的东西?或者它可能存在于karma.conf.js中未包含的源文件中?无法确切地说出来,但我猜测你的测试很好,问题是业力无法找到你的控制器。
您可能还想在浏览器实例karma启动时尝试调试按钮。这将打开另一个页面,您可以在chrome dev工具或firebug或您的fave JavaScript调试器中进行检查。继续潜水,看看实际上有什么业力,你可能会发现问题。希望这会有所帮助。