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