我试图用业力对我的一个控制器进行单元测试时注意到奇怪的事情。这是规格:
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
中,但现在我再也看不到它的重点,因为如果预期的请求没有得到,业力就会抛出错误并且规范失败了。
方法是无用的,还是我不理解的东西?
如果我没有说清楚,我 没有打电话 验证未出现的期望,但仍然会发生错误。