0

在测试我的 REST 服务时,我收到以下错误消息:

错误:[$resource:badcfg] 查询 http://errors.angularjs.org/1.4.6/$resource/badcfg?p0=array&p1=object&p2=GET&p3=http%3A%2F%2Flocalhost%3A63831%2Fapi%2Fnames in http://localhost:60694/js/angular.js(第 68 行)

我不知道如何解决这个问题。该应用程序是否可能与 WebApi 一样位于另一个 localhost 端口中?

下面的代码显示了单元测试:

describe('Test', function () {
        var $httpBackend, $rootScope, crudService, baseUrl, respValue;

        beforeEach(function () {
            module('testApp');

            inject(function (_$httpBackend_, _$rootScope_, _CrudService_, _baseUrl_) {
                $httpBackend = _$httpBackend_;
                $rootScope = _$rootScope_;
                crudService = _CrudService_;
                baseUrl = _baseUrl_;
            });
        });

        it('should make a request to the backend', function () {
            $httpBackend.whenGET('views/home.html').respond(200);
            $httpBackend.expectGET(baseUrl + '/api/names').respond(200, [{
                Id: '1', fname: 'John', lname: 'Doe', age: 30, GroupId: 1
            }]);

            $rootScope.$digest();

            crudService.getAllNames().$promise.then(function (response) {
                respValue = response;
            });

            $httpBackend.flush();

            expect(respValue).toContain([{
                Id: '1', fname: 'John', lname: 'Doe', age: 30, GroupId: 1
            }]);
        });

编辑:

我尝试了下面的答案并添加了一个expect()-method,并显示了以下错误消息:

预期 [ d({ Id: '1', fname: 'John', lname: 'Doe', age: 30, GroupId: 1 }), $promise: Promise({ $$state: Object({ status: 1,待定:未定义,值:,processScheduled:false }) }),$resolved:true ] 包含 [ Object({ Id: '1', fname: 'John', lname: 'Doe', age: 30, GroupId: 1})]。

4

1 回答 1

2

很可能这条线是问题所在

$httpBackend.expectGET(baseUrl + '/api/names').respond(200, {
                Id: '1', fname: 'John', lname: 'Doe', age: 30, GroupId: 1
            });

响应应该是一个数组,但它是一个对象。你能把这条线改成

 $httpBackend.expectGET(baseUrl + '/api/names').respond(200, [{
                    Id: '1', fname: 'John', lname: 'Doe', age: 30, GroupId: 1
                }]);

并尝试。

于 2015-10-02T12:25:01.790 回答