我可以在茉莉花单元测试中匹配来自$ resource服务的mock- $ httpBackend数据吗?我该怎么做?
当我使用$ httpBackend和$ http服务测试我的后端服务时,我可以这样做:
it("should return movie search data from the title", function() {
var movieData = { title: "The Phantom Menace", description: "A movie.";
var response = [];
$httpBackend.when('GET', 'http://www.omdbapi.com/?v=1&s=the%20phantom%20menace')
.respond(200, movieData);
moviesService.search('the phantom menace')
.then(function onSuccess(data) {
response = data;
});
$httpBackend.flush();
expect(response.data).toEqual(movieData);
}); // end it
我将所有The Phantom Menace的信息存储在 movieData 中。此测试通过,因为它将从模拟后端接收的数据与它应该的数据(movieData)进行比较。
当我使用$ httpBackend和$ resource服务测试我的后端服务时,事情就不同了。
it("retrieves a bunch objects", function() {
var result = {}, testArray = [];
var dataToCheck = [
{ id: 1, "des": "This is one."},
{ id: 2, "des": "This is two."},
{ id: 3, "des": "This is three."}
];
$httpBackend.whenGET('movies/api')
.respond(dataToCheck);
MovieResource.query().$promise.then(function (data) {
result = data;
});
$httpBackend.flush();
angular.forEach(result, function (resource) {
testArray.push(resource);
})
expect(testArray).toEqual(dataToCheck);
}); // end it
业力告诉我:
预期[资源({id:1,des:'这是一个。'}),资源({id:2, des:'这是两个。' }),资源({id:3,des:'这是三。'})] 等于[Object({id:1,des:'This is one。'}),Object({id:2, des:'这是两个。' }),Object({id:3,des:'This is three。'})]。
因此,它们不是“对象”,而是“资源”。
我感谢你能给我的任何指导。
答案 0 :(得分:0)
你需要做这样的事情
expect(testArray[0].id).toEqual(dataToCheck[0].id);
expect(testArray[1].id).toEqual(dataToCheck[1].id);
expect(testArray[0].des).toEqual(datatoCheck[0].des);
参考: documentation