ERR: запрос [$ resource: badcfg] при тестировании службы ресурсов с помощью Jasmine

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)

Я не знаю, как решить проблему. Возможно ли, что приложение находится в другом порту localhost как WebApi?

В приведенном ниже коде показан блок-тест:

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', возраст: 30, GroupId: 1}), $ prom: Promise ({$$ state: Object ({status: 1, pending: undefined, value:, processScheduled: false})}), $ resolved: true], чтобы содержать [Object ({Id: '1', fname: 'John', lname: 'Doe', age: 30, GroupId: 1})].

  • 0
    Я получил ошибку cfg при использовании $ resource, моей проблемой оказался заголовок моего вызова rest. Я должен был установить его следующим образом: headers: {"Accept": "application / json; odata = verbose"}
  • 0
    @user3266024 user3266024 Где я должен добавить это в мой юнит-тест?
Показать ещё 2 комментария
Теги:
unit-testing
jasmine
angularjs-ng-resource

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
                }]);

и попробовать.

  • 0
    Хорошо, теперь я получаю следующее сообщение в своем списке тестирования: SPEC HAS NO EXPECTATIONS should make a request to the backend бэкэнду. Я знаю, что мне нужен метод wait expect() . Но я не знаю, как я могу проверить ожидаемый запрос GET ?!
  • 0
    Когда вы настроите expectGET тест GET, не будет выполнено GET. Вы можете проверить это, комментируя вызов getAllNames . Если ничего не выходит из строя, сработало ожидание GET.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню