SORU
15 Mayıs 2013, ÇARŞAMBA


AngularJS - birim bağımlılıkları olan bir fabrika test

Birim testi Açısal Fabrikası (Karma Yasemin ile) ne zaman, nasıl test edilen fabrika içine saplama bağımlılık enjekte edebilirim?

İşte benim fabrika:

mod = angular.module('myFactoryMod', []);

mod.factory('myFactory', [
  '$log', 'oneOfMyOtherServices', function($log, svc) {
    return makeSomethingThatDoesSomethingWithTheseDependencies($log, svc);
  }
]);

oneOfMyOtherServices fabrikamı başlatmasını gereklidir.

İşte benim test:

it('can get an instance of my factory', function() {
  var oneOfMyOtherServicesStub;

  angular.mock.module('myFactoryMod');

  oneOfMyOtherServicesStub = {
    someVariable: 1
  };

  //****How do I get my stub in my target? ****

  angular.mock.inject(['myFactory', function(target) {

      expect(target).toBeDefined();

    }
  ]);
})

N. B. I $controller denetleyicileri için bu sağlar, ama fabrikalar için bir eşdeğer görmüyorum.

CEVAP
15 Mayıs 2013, ÇARŞAMBA


Bildiğim kadarıyla böyle bir şeyi yapmanın iki yolu vardır:

  1. $provide ve isimsiz bir modül alay enjekte etmek için kullanın.
  2. Alay ve jasmine'in alay değerleri sağlamak için casusluk yeteneği kullanmak istediğiniz hizmeti enjekte.

İkinci seçenek, yalnızca tam olarak test altında kod enjekte hizmet arayacak olan biliyorsanız çalışır ve kolayca onları dışarı alay. (Yerine bir yöntem) servis takip veri bir özellik erişim gibisiniz olarak ilk seçenek iyi olabilir.

$provide kullanarak bu gibi görünecektir kabaca:

describe('myFactory', function () {
  // Load your module.
  beforeEach(module('myFactoryMod'));

  // Setup the mock service in an anonymous module.
  beforeEach(module(function ($provide) {
    $provide.value('oneOfMyOtherServicesStub', {
        someVariable: 1
    });
  }));

  it('can get an instance of my factory', inject(function(myFactory) {
    expect(myFactory).toBeDefined();
  }));
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blendtec

    Blendtec

    30 EKİM 2006
  • Caramella Girls

    Caramella Gi

    19 Mayıs 2008
  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010