【发布时间】:2014-12-03 03:45:58
【问题描述】:
我是单元测试概念的新手,我正在尝试设置一个简单的测试。我正在开发的平台要求所有 JavaScript 首先用 CoffeeScript 编写。我已经阅读了许多关于如何完成此操作的示例,但我的测试不断失败。
这是我的控制器的样子:
'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 编码)或者我是否完全忘记了一些东西。
【问题讨论】:
-
想通了...我试图引用的页面对象已在其他地方声明。此示例是从多个开发人员正在开发的平台的一部分中抽象出来的。解决方法就是将页面对象设置为空,测试成功。干杯
-
请自行回答,以便其他人知道这个问题已经解决。
标签: angularjs testing coffeescript phantomjs karma-runner