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

  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008
  • VitalyzdTv

    VitalyzdTv

    7 AĞUSTOS 2011