我有一个 AngularJS/Rails 应用程序,我想测试我的 AngularJS 控制器在创建新记录时是否发布到后端服务器。(我正在使用茉莉花进行测试)
这是我尝试的测试
describe "create", ->
beforeEach(inject ( ($controller, $rootScope, $location, $state, $httpBackend) ->
@redirect = spyOn($location, 'path')
@httpBackend.whenGET('/assets/layouts/default.html.erb').respond(200)
@httpBackend.whenGET('/assets/letters/index.html.erb').respond(200)
@httpBackend.whenPOST('/api/letters').respond(200)
$controller("LettersController", { $scope: @scope, $location: @location })
))
it "sends a post to the backend", ->
@httpBackend.expectPOST('/api/letters', {"letter":{},"_utf8":"☃"}).respond(200)
@scope.create()
这是我正在测试的代码:
$scope.create = ->
Letter.save(
{}
,
letter:
subject: $scope.letter.subject
body: $scope.letter.body
# success
, (response) ->
$location.path "/letters"
# failure
, (response) ->
)
有问题的代码可以正常工作并且测试通过。问题是如果我将我的 Letter.save 代码注释掉(通过 AngularJS 资源发布),那么我的测试仍然通过。
我怎样才能让我的测试正常工作?
我的完整测试应用程序在这里:https ://github.com/map7/angularjs_rails_example2