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

  • Hak5

    Hak5

    7 EYLÜL 2005
  • Kingsimba357

    Kingsimba357

    7 NİSAN 2008
  • ::..ηєѕѕ мιχ..::

    ::..ηєѕѕ

    15 Aralık 2006