2013-06-24 89 views
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編碼),或者我完全忘記了一些東西。

+0

想通了......我試圖引用的頁面對象是在其他地方聲明的。這個例子是從多個開發人員正在開發的一個平臺中抽象出來的。解決方案只是簡單地將頁面對象設置爲空,並且測試成功通過。歡呼 –

+8

請讓這個自己的答案,讓其他人知道這個問題已經解決。 – matsko

回答

1

正如上面指出:

想通了......我試圖引用頁面對象在別處聲明。這個例子是從多個開發人員正在開發的一個平臺中抽象出來的。解決方案只是簡單地將頁面對象設置爲空,並且測試成功通過。

相關問題