2
我对单元测试的概念很陌生,我试图设置一个简单的测试。我正在处理的平台要求所有的JavaScript首先用CoffeeScript编写。我已经阅读了很多关于如何完成这个任务的例子,但是我的测试不断失败。使用CoffeeScript和Karma测试AngularJS控制器的单元
这里是我的控制器是什么样子:
'use strict'
angular.module('test')
.controller 'BasicController', ['$scope', '$location', ($scope, $location) ->
$scope.page.title = "Page Title"
$scope.$watch(
() ->
return $location.url()
)
]
这里是我的测试脚本的样子:
'use strict'
describe "The Basic Controller", ->
beforeEach(module('test'))
scope = {}
location = {}
ctrl = {}
beforeEach inject ($rootScope, $controller, $location) ->
scope = $rootScope.$new()
location = $location
ctrl = $controller("BasicController", {$scope: scope})
it "should have the correct title", ->
expect(scope.page.title).toBe("Page Title")
我使用PhantomJS和错误信息,我得到的是, scope.page.title对象未定义。我不明白为什么会发生这种情况。我将该变量设置为测试正在检查的值,我很难理解为什么它没有通过。任何帮助或指导将不胜感激。我不知道如果我在CoffeeScript语法中犯了一个错误(更重要的是使用JavaScript编码),或者我完全忘记了一些东西。
想通了......我试图引用的页面对象是在其他地方声明的。这个例子是从多个开发人员正在开发的一个平台中抽象出来的。解决方案只是简单地将页面对象设置为空,并且测试成功通过。欢呼 –
请让这个自己的答案,让其他人知道这个问题已经解决。 – matsko