2

我是单元测试概念的新手,我正在尝试设置一个简单的测试。我正在开发的平台要求所有 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 编码)或者我是否完全忘记了一些东西。

4

1 回答 1

1

如上所述:

想通了...我试图引用的页面对象已在其他地方声明。此示例是从多个开发人员正在开发的平台的一部分中抽象出来的。解决方法就是将页面对象设置为空,测试成功。

于 2014-12-02T19:45:58.947 回答