SORU
1 Mart 2012, PERŞEMBE


Yasemin bir nesne olmadan bir işlevi casusluk için kullanıyor

Jasmine yeniyim ve sadece bunu kullanmaya başladım. Herhangi bir nesne ile ilişkili değildir (yani genel) hangi işlevleri bir sürü dosya js kütüphanesi var. Nasıl bu işlevleri üzerinde casusluk için ne yapmam lazım?

Nesne olarak pencere/belge kullanarak denedim, ama casus fonksiyonu olsa bile işe yaramadı. Ben de aşağıdaki gibi sahte bir nesne içinde sarma çalıştı

var fakeElement = {};
fakeElement.fakeMethod = myFunctionName;
spyOn(fakeElement, "fakeMethod");

ve test

expect(fakeElement.fakeMethod).toHaveBeenCalled();

Bu casus işe yaramadı ya da çalışmıyor

CEVAP
1 Mart 2012, PERŞEMBE


Eğer fonksiyon tanımlıyorsanız:

function test() {};

O zaman, bu eşittir:

window.test = function() {}  /* (in the browser) */

spyOn(window, 'test') çalışması gerekir.

Eğer o değilse de olmalıdır:

test = jasmine.createSpy();

Eğer bunların hiçbiri çalışıyorsanız, başka bir kurulum ile devam ediyor.

fakeElement tekniğin perde arkasında neler oluyor, çünkü eserlerini sanmıyorum. Orijinal globalMethod hala aynı kodu gösteriyor. Casusluk yaptığı proxy, ama sadece bir nesne bağlamında. Eğer test kod fakeElement üzerinden çağrı bulabilirsen işe yarar, ama genel fns vazgeçmek mümkün olurdu.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • placeboing

    placeboing

    7 Mart 2006
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006