Javascript $controller不是Angular/Jasmine中的函数
我用测试仪把头发拔出来。我试图实例化一个控制器,jasmine抱怨$controller不是一个函数。下面是我的测试Javascript $controller不是Angular/Jasmine中的函数,javascript,angularjs,unit-testing,jasmine,karma-jasmine,Javascript,Angularjs,Unit Testing,Jasmine,Karma Jasmine,我用测试仪把头发拔出来。我试图实例化一个控制器,jasmine抱怨$controller不是一个函数。下面是我的测试 describe "MyCtrl test", () -> beforeEach module('ngRoute') beforeEach module('myControllers') $controller = undefined $scope = undefined $routeParams = undefined mySvc = undef
describe "MyCtrl test", () ->
beforeEach module('ngRoute')
beforeEach module('myControllers')
$controller = undefined
$scope = undefined
$routeParams = undefined
mySvc = undefined
beforeEach inject (_$controller_, $rootScope, _$routeParams_,_mySvc_) ->
$controller = _$controller_
$scope = $rootScope.$new()
mySvc = _mySvc_
describe "MyCtrl", () ->
beforeEach () ->
MyCtrl = $controller('MyCtrl', {$scope:$scope,$routeParams:$routeParams,mySvc:mySvc})
it "should be defined", () ->
expect(MyCtrl).toBeDefined()
我在顶级范围中定义了$controller,注入了controller服务并将其分配给全局变量。它怎么不是一个函数呢?试试这个:
describe "MyCtrl test", () ->
beforeEach module('ngRoute')
beforeEach module('myControllers')
myController = undefined
$scope = undefined
$routeParams = undefined
mySvc = undefined
createCtrl = undefined
beforeEach inject($controller, $rootScope, _$routeParams_,_mySvc_) ->
myController = $controller
$scope = $rootScope.$new()
mySvc = _mySvc_
createrCtrl = ->
myController('MyCtrl', {$scope:$scope,$routeParams:$routeParams,mySvc:mySvc})
it "should be defined", () ->
createCtrl()
expect(MyCtrl).toBeDefined()
在我的公司获得WebStorm许可证的几天里,我一直在使用SublimiteText。从头重写代码似乎解决了这个问题。我尝试将制表符转换为空格-这解决了我遇到的一个问题,但它没有修复$controller错误,但从头开始就解决了。inject和括号之间有空格,请删除它,同时删除$controller中的下划线,再试一次inject和括号之间的空格是一个打字错误。这并不能解决问题。如果我从$controller中删除下划线,我会得到一个错误,$rootScope没有定义。这很奇怪!您可以尝试添加一个
dump
语句来显示$controller
紧跟在描述“MyCtrl”…
之后的内容吗。还要检查你是否真的注射了u$controller(你应该注射)。我假设你的karma.conf.js设置好了angular.mock?是的。我仍然习惯于测试Angular(这是gotchas的一个雷区),但我相当肯定我以前使用过这个模式,而且它很有效。转储$controller不会输出任何东西。我不知道发生了什么,但我尝试从头开始重写我的代码-和以前完全一样-并且成功了。我的档案里一定有一些奇怪的人物或小精灵之类的东西。这很令人沮丧。这也不起作用。出于某种原因,行myController=$controller在WebStorm中生成语法错误(意外缩进)。我对某些代码有这个问题,这很奇怪。这显然不是压痕错误。编辑:我试过你的编辑,我仍然得到同样的问题。“语法错误”也打破了因果报应。尝试选择整个文档并将缩进转换为空格,这是CoffeeScriptThank的一个常见问题,解决了一个问题。它消除了语法错误。过去几天,当他们升级我的WebStorm许可证时,我一直在使用SublimiteText,这可能会影响选项卡/空间。不过还有其他问题。