Использование Jest для юнит-теста в угловой версии 1.6

Я пытаюсь протестировать свой угловой сервис, который использует Marvel API, и я следил за этой статьей, но я не могу понять, что я делаю неправильно.

ошибка

Failed to instantiate module marvel due to:{1}

Мой app.js

(() => {
  angular.module('marvel', [
    'ui.router',
    'ngAnimate',
    'ngAria',
    'ngMessages',
    'ngMaterial'
  ])
})()

Код моей тестовой спецификации

require('../../node_modules/angular/angular.min.js')
require('../../node_modules/angular-mocks/angular-mocks.js');
require('../../src/app/app.js')
require('../../src/app/services/marvel.service.js')

describe('\nFail Cases', () => {
  beforeEach(angular.mock.module('marvel'))
  let _marvelservice
  beforeEach(inject((MarvelService) => {
    _marvelservice = MarvelService
  }));

  test('should return false when user do not put the id for details correctly', (done) => {
    _marvelservice.getDetail()
      .catch((err) => {
        expect(err.xhrStatus).toBe('error')
      })
  })
})

Марвел Сервис

(() => {
  angular.module('marvel')
    .factory('MarvelService', ($http, $q, Config) => {
      /**
       * Get 10 characters from Marvel API.
       * @return {Object} Doc with all character recovered.
       */
      function getCharacters () {
        return request('', 'GET', { ts: 1, limit: 10, apikey: 
       `${Config.MARVEL.PUBLIC_KEY}`, hash: `${Config.MARVEL.MD5}` })
      }

      /**
       * Get details from a characters by consulting the Marvel API.
       * @return {Object} Doc with detail character recovered.
       */
      function getDetail (id) {
        const urlAddress = `/${id}`
        return request(urlAddress, 'GET', { ts: 1, apikey: 
        `${Config.MARVEL.PUBLIC_KEY}`, hash: `${Config.MARVEL.MD5}` })
      }

      /**
       * Responsible for request.
       * @return {Object} Doc with the returned promise.
       */
      function request (path, method, querystring) {
         const options = {
          method,
          url: `${Config.MARVEL.URL}${path}`,
          params: querystring
      }

      return $http(options)
        .then(success => { return success.data }, (err) => {
          return err
        })
      }

      return {
        getCharacters,
        getDetail
      }
    })
})()

1 ответ

Решение

Проблема именно в том, что говорит ошибка. Там должен быть marvel модуль, и его там нет.

angular.module('marvel') является модулем получения. Ожидается, что модуль уже был определен с angular.module('marvel', []),

Другие вопросы по тегам