0

我有一个模块App可以检查用户是否登录。

App.run ['$rootScope', 'UserService', ($rootScope, UserService) ->
  UserService.current_user()
]

UserService.current_user()触发$http请求。

那么如何编写 $httpBackend 来模拟请求呢?我尝试了一些方法:

describe 'App', ->
  $httpBackend = null

  beforeEach(module('App')) # one
  beforeEach inject ($injector) -> # two
    $httpBackend = $injector.get('$httpBackend')
    $httpBackend
      .when('GET', '/api/1/users/current_user')
      .respond(403, {"error":"not signin"})


  it "should get current_user request", () ->
    $httpBackend.expectGET('/api/1/users/current_user').respond(403, {'error': 'not signin'})

这将显示错误:

Error: Unexpected request: GET /api/1/users/current_user No more request expected

如果我改变 和 的# one顺序# two。它会显示错误

Error: Injector already created, can not register a module!

这让我陷入了抑郁。我需要一些帮助。

4

1 回答 1

0

我使它与这个一起工作:

describe 'App', ->
  beforeEach angular.mock.module('App')

  it "should get current_user request", inject ($httpBackend) ->
    $httpBackend.expectGET('/api/1/users/current_user').respond(403, {'error': 'not signin'})
    $httpBackend.flush()

如果您将后端期望放在 each 之前,它也可以工作:

describe 'App', ->
  beforeEach angular.mock.module('App')
  beforeEach inject ($httpBackend) ->
    $httpBackend.expectGET('/api/1/users/current_user').respond(403, {'error': 'not signin'})
    $httpBackend.flush()

  it 'should test someting else', ->

在这个Plunker中查看它的实际效果。

于 2013-06-23T12:11:42.657 回答