Fábrica de stubbing usada na resolução

Estou tentando testar meus estados em um controlador. O que eu quero fazer é apagar minhaitems fábrica, pois tenho testes de unidade separados que cobrem essa funcionalidade. Estou tendo dificuldade em obter o$injector realmente injetar a fábrica, mas parece que eu estou deixando o$provider sei que quero usar meu objeto de itens falsos quando instancia o controlador. Como um aviso, sou novo no angular e gostaria de alguns conselhos se meu código parecer ruim.

Atualmente, quando executo o teste, recebo a mensagem:

Error: Unexpected request: GET /home.html
    No more request expected
        at $httpBackend (node_modules/angular-mocks/angular-mocks.js:1418:9)
        at n (node_modules/angular/angular.min.js:99:53)
        at node_modules/angular/angular.min.js:96:262
        at node_modules/angular/angular.min.js:131:20
        at m.$eval (node_modules/angular/angular.min.js:145:347)
        at m.$digest (node_modules/angular/angular.min.js:142:420)
        at Object.<anonymous> (spec/states/homeSpec.js:29:16)

Parece que minha fábrica de itens simulados não está sendo injetada no teste. Quando eu coloco umconsole.log linha no método que eu quero stub na fábrica de itens, vejo a linha sendo chamada.

O código que estou procurando testar é o seguinte:

angular.module('todo', ['ui.router'])
// this is the factory i want to stub out...
.factory('items', ['$http', function($http){
  var itemsFactory = {};
  itemsFactory.getAll = function() {
    // ...specifically this method
  };
  return itemsFactory;
}])
.controller('TodoCtrl', ['$scope', 'items', function($scope, items) {
  // Do things
}])
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider){
  $stateProvider
    .state('home', {
      url: '/home',
      templateUrl: '/home.html',
      controller: 'TodoCtrl',
      resolve: {
        items: ['items', function(items){
          // this is the invocation that i want to use my stubbed method
          return items.getAll();
        }]
      }
    });

  $urlRouterProvider.otherwise('home');
}]);

Meu teste é assim:

describe('home state', function() {

  var $rootScope, $state, $injector, state = 'home';
  var getAllStub = sinon.stub();
  var items = {
    getAll: getAllStub
  };

  beforeEach(function() {
    module('todo', function($provide) {
      $provide.value('items', items);
    });

    inject(function(_$rootScope_, _$state_, _$injector_) {
      $rootScope = _$rootScope_;
      $state = _$state_;
      $injector = _$injector_;
    });
  });

  it('should resolve items', function() {
    getAllStub.returns('getAll');

    $state.go(state);
    $rootScope.$digest();
    expect($state.current.name).toBe(state);

    expect($injector.invoke($state.current.resolve.items)).toBe('findAll');
  });
});

Agradeço antecipadamente por sua ajuda!

questionAnswers(1)

yourAnswerToTheQuestion