Wenn ich das Antwortobjekt aus dem httpbackend ein einzelnes Objekt anstelle eines Arrays für "Daten" machen, funktioniert es gut. Aber sobald ich es zu einem Array mache (sogar ein einzelnes Element-Array), will es nicht funktionieren und gibt mir eine Fehlermeldung, dass undefined kein Objekt ist (Bewertung von "booking.Student.studentName"). Unten ist der Code. Irgendwelche Ideen? Ist es, weil lodash nicht sein Ding macht?Jasmin undefined kein Objekt, kann keinen Schlüssel finden
Ich habe die folgende Funktion in meinem Controller
$scope.initBookings = function() {
return $http.get('/api/bookings').then(function(response) {
return $scope.bookings = _.map(response.data, function(booking) {
booking.studentName = booking.Student.studentName;
booking.slotDay = booking.Slot.day;
booking.slotTime = booking.Slot.time;
booking.subjectName = booking.Subject.name;
return booking;
});
});
};
Und mein Test ist die folgende
it('should store bookings into $scope.bookings and create a $scope.bookingsTable', function() {
expect(this.scope.bookings).toBeUndefined();
this.scope.initBookings();
this.httpBackend.expect('GET', '/api/bookings');
this.httpBackend.flush();
expect(this.scope.bookings).toBeDefined();
});
this.httpBackend.whenGET('/api/bookings').respond(function() {
return [
200, {
data: [
{
Student: {
studentName: 'John Die'
},
Slot: {
day: 'today',
time: 'now'
},
Subject: {
name: 'maths'
}
}, {
Student: {
studentName: 'Jane Die'
},
Slot: {
day: 'tomorrow',
time: 'before'
},
Subject: {
name: 'mathamatix'
}
}
]
}
];
});
es kehrt diese
Object{data: [Object{Student: ..., Slot: ..., Subject: ...}, Object{Student: ..., Slot: ..., Subject: ...}]}
Es ist merkwürdig, dass Sie die gleiche Variable ('booking') verwenden, um Daten gleichzeitig abzurufen und zuzuweisen. Haben Sie versucht, eine console.log dieser Variable zu machen, um zu sehen, was sie zurückgibt? –
wie viele zurück !!! – morels
so? Hast du das Problem gelöst? – morels