Javascript 角度JS+;茉莉花测试控制器
我在controllersSpec.coffee应用程序代码中有一个简单的测试:Javascript 角度JS+;茉莉花测试控制器,javascript,testing,angularjs,mocking,jasmine,Javascript,Testing,Angularjs,Mocking,Jasmine,我在controllersSpec.coffee应用程序代码中有一个简单的测试: describe 'Controllers', -> beforeEach -> angular.module 'app' describe 'MainCtrl', -> beforeEach inject ($controller, $rootScope) -> scope = $rootScope.$new() ctrl = $contro
describe 'Controllers', ->
beforeEach ->
angular.module 'app'
describe 'MainCtrl', ->
beforeEach inject ($controller, $rootScope) ->
scope = $rootScope.$new()
ctrl = $controller 'MainCtrl', $scope: scope
it 'should be true', ->
expect(true).toEqual(true)
和用于测试的SpecRunner.html文件:
<html lang="eu">
<head>
<title>Angular Test Runner</title>
<script src="../js/libs/jquery.js"></script>
<script src="lib/jasmine.js"></script>
<script src="lib/jasmine-html.js"></script>
<script src="../js/libs/underscore.js"></script>
<script src="../js/libs/angular.js"></script>
<script src="lib/angular/angular-mocks.js"></script>
<script src="lib/angular/angular-scenario.js" ng-autotest></script>
<script src="../js/controllers.js"></script>
<script src="controllersSpec.js"></script>
<script type="text/javascript">
(function() {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function(spec) {
return htmlReporter.specFilter(spec);
};
var currentWindowOnload = window.onload;
window.onload = function() {
if (currentWindowOnload) {
currentWindowOnload();
}
execJasmine();
};
function execJasmine() {
jasmineEnv.execute();
}
})();
</script>
</head>
<body>
</body>
</html>
角测试转轮
(功能(){
var jasmineEnv=jasmine.getEnv();
jasmineEnv.updateInterval=1000;
var htmlReporter=new jasmine.htmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter=函数(spec){
返回htmlReporter.specFilter(spec);
};
var currentWindowOnload=window.onload;
window.onload=函数(){
如果(currentWindowOnload){
currentWindowOnload();
}
茉莉花();
};
函数execJasmine(){
jasminev.execute();
}
})();
该抛出错误,关于angular mock中的“$modules”:
TypeError: Cannot read property '$modules' of null
at Object.workFn (http://localhost/lolobot/test/lib/angular/angular-mocks.js:1745:25)
at Object.<anonymous> (http://localhost/lolobot/test/lib/angular/angular-scenario.js:24673:54)
at Array.forEach (native)
at Object.forEach (http://localhost/lolobot/test/lib/angular/angular-scenario.js:9538:11)
TypeError:无法读取null的属性“$modules”
at Object.workFn(http://localhost/lolobot/test/lib/angular/angular-mocks.js:1745:25)
反对。(http://localhost/lolobot/test/lib/angular/angular-scenario.js:24673:54)
at Array.forEach(本机)
在Object.forEach(http://localhost/lolobot/test/lib/angular/angular-scenario.js:9538:11)
你能帮我解决那个问题吗?这是我第一个测试angular应用程序。我想你需要更多的angular软件包。我把整个套间都放在我的跑鞋里了。我不认为我真的需要全部,但我已经尝试删除了一些,但失败了。具体而言,我有以下几点:
angular.js
angular-bootstrap.js
angular-cookies.js
angular-loader.js
angular-mocks.js
angular-resource.js
angular-sanitize.js
此外,在测试中,您可能希望
controller = null
scope = null
在
描述块中的任何内容之前。否则,您的控制器和作用域将在inject
函数中成为局部变量。您的解决方案是什么?我现在正遇到这种情况!