2016-05-19 2 views
1

Я строю тест для своего приложения с угловым покрытием, используя Jasmine.jasmine httpbackend любой URL-адрес для возврата mock-данных

Я хочу, чтобы дразнить вызов апи, чтобы вернуть некоторые данные, но мой апи вызов на моем контроллере

$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

Регулярное выражение кажется неправильным. Попробуйте следующие

^\/api\/students\/.* 

Слэш добавил после того, как «студентов», чтобы избежать прямой слэш, убрана слэш в конце, чтобы регулярное выражение в качестве фактического вызова API, не имеющий слэш в конце.

Далее регулярное выражение группа может быть использована для извлечения студента ID

\/api\/students\/#(.*) //The brackets group would extract Student ID 
Смежные вопросы