jasmine httpbackend任何返回模拟数据的网址

时间:2016-05-19 18:18:51

标签: angularjs unit-testing coffeescript

我正在使用Jasmine为我的Angular应用程序构建测试。

我想模拟api调用以返回一些数据,但我的控制器上的api调用是

$scope.getSubjects = ->
  $http.get "/api/students/#{$scope.freshBooking.StudentId}"
  .then (response) ->
    $scope.subjects = response.data.Subjects

在我的测试中我有

@httpBackend.whenGET(/^\/api\/students/.*/).respond ->
  [200, {data: 'subjects'}]

it 'should have data in subjects', ->
  expect(@scope.subjects).toBeUndefined()
  @scope.getSubjects()
  @httpBackend.flush()
  expect(@scope.subjects).toBeDefined()

我收到错误消息“预期未定义要定义。”所以我猜我没有为api电话返回任何数据。

我如何才能让这个工作?我的正则表达式不正确吗?

1 个答案:

答案 0 :(得分:1)

正则表达式似乎不正确。试试以下

\/api\/students\/#(.*)  //The brackets group would extract Student ID

Slash"学生"为了逃避正斜杠,删除了最后的斜杠到正则表达式,因为实际的API调用最后没有斜杠。

进一步的正则表达式组可用于提取学生ID

{{1}}