$ httpBackend.verifyNoOutstandingExpectation没用?

时间:2015-03-08 14:22:01

标签: javascript angularjs unit-testing karma-jasmine httpbackend

我试图用业力对我的一个控制器进行单元测试时注意到奇怪的事情。这是规格:

it 'should POST new category data to /api/categories with category name', ->
  $httpBackend.expectGET '/api/categories'
    .respond 200, ''
  $httpBackend.expectPOST '/api/categories', {name: 'food' }
    .respond 201, ''
  scope.name = 'food'
  scope.addCategory()
  $httpBackend.flush()

这是我的控制者:

angular.module 'fmAppApp'
    .controller 'CategoriesCtrl', (Category, $scope) ->
      $scope.categories = Category.query()
      $scope.addCategory = ->
        category = new Category { name: $scope.name}
        category.$save()
        $scope.categories.push category
        $scope.name = ''
上面的

Category依赖是$ resource。

所以当我在控制器中注释执行POST请求(category.$save()

的行时

我从业力中得到这个错误: Error: Unsatisfied requests: POST /api/categories

我觉得奇怪,因为$ httpBackend提供了这种断言的方法,即$httpBackend.verifyNoOutstandingExpectation对吗? it's described here in angular docs它说

  

验证通过expect api定义的所有请求。如果未提出任何请求,则verifyNoOutstandingExpectation会抛出异常。

我看到每个人都在使用它,所以我也习惯把它放在afterEach中,但现在我再也看不到它的重点,因为如果预期的请求没有得到,业力就会抛出错误并且规范失败了。

方法是无用的,还是我不理解的东西?

如果我没有说清楚,我 没有打电话 验证未出现的期望,但仍然会发生错误。

0 个答案:

没有答案