2016-05-19 6 views
1

Ich baue einen Test für meine Angular App mit Jasmine.Jasmin httpbackend jede URL zurück zu Mock-Daten

Ich möchte den API-Aufruf verspotten einige Daten, aber mein api Anruf auf meinem Controller zurückzukehren

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

Auf meinem Test habe ich

@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() 

Ich erhalte eine Fehlermeldung, „Erwartet nicht definiert zu definieren." also schätze ich, dass ich keine Daten für den API-Anruf zurückgebe.

Wie würde ich dafür sorgen, dass dies funktioniert? Ist meine Regex falsch?

Antwort

1

Regulärer Ausdruck scheint falsch zu sein. Versuchen Sie folgende

^\/api\/students\/.* 

Slash hinzugefügt, nachdem „Schüler“ zu entkommen Schrägstrich vorwärts, entfernt den Schrägstrich am Ende zu regex als der tatsächliche API-Aufruf wird am Ende nicht Slash hat.

Weitere regex Gruppe kann verwendet werden, um die Teilnehmer-ID zu extrahieren

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