Mocha - Sinon Library

Tahir Can Yıldız
Kodcular
Published in
3 min readAug 9, 2024

Sinon.js, JavaScript’te testler sırasında kullanabileceğiniz bir kütüphanedir ve özellikle fonksiyonları izleme, taklit etme ve değiştirme işlemlerini kolaylaştırır. Sinon’un üç temel yapı taşı vardır: stubs, mocks, ve spies. Bu terimler, test senaryolarında farklı amaçlar için kullanılır:

1. Spy (Casus):

  • Ne işe yarar? Spy, bir fonksiyonun nasıl çağrıldığını, kaç kez çağrıldığını, hangi argümanlarla çağrıldığını ve çağrıldığında ne döndüğünü izlemek için kullanılır.
  • Özellikler: Spy fonksiyonları, orijinal fonksiyonun davranışını değiştirmez; sadece onu izler ve raporlar.
  • Örnek Kullanım: Bir fonksiyonun belirli bir durumda çağrılıp çağrılmadığını test etmek için kullanılabilir.
const myFunction = sinon.spy();
myFunction('test');
// Test: myFunction'un bir argümanla çağrılıp çağrılmadığını kontrol edebilirsiniz.
sinon.assert.calledWith(myFunction, 'test');

2. Stub (Yer Tutucu):

  • Ne işe yarar? Stub, orijinal fonksiyonun yerini alarak onun yerine geçer. Stubs, fonksiyonun nasıl davranacağını kontrol etmek, belirli değerler döndürmek veya hata fırlatmak için kullanılabilir.
  • Özellikler: Stub, orijinal fonksiyonun davranışını tamamen değiştirir. Aynı zamanda bir Spy gibi fonksiyon çağrılarını izleyebilir.
  • Örnek Kullanım: Bir fonksiyonun dış bağımlılıklara sahip olduğu durumlarda, bu bağımlılıkların etkilerini izole etmek için kullanılabilir.
const myStub = sinon.stub();
myStub.returns(42);
console.log(myStub()); // 42 döner
// Test: myStub'un doğru değeri döndürüp döndürmediğini kontrol edebilirsiniz.
sinon.assert.returned(myStub, 42);

3. Mock (Model):

  • Ne işe yarar? Mock, bir nesne üzerindeki metotların nasıl çağrılması gerektiğini ve hangi sonuçları döndürmesi gerektiğini tanımlayarak, bu davranışları doğrulayan bir yapıdır. Mocklar, belirli bir fonksiyonun belirli sayıda çağrılmasını ve belirli argümanlarla çağrılmasını bekler.
  • Özellikler: Mock, bir Spy ve Stub’un kombinasyonudur. Davranışı kontrol ederken aynı zamanda fonksiyonun çağrılarını ve döndürdüğü değerleri izler.
  • Örnek Kullanım: Bir nesne üzerinde birden fazla metodun doğru sıralamada ve doğru argümanlarla çağrıldığını test etmek için kullanılabilir.
const myMock = sinon.mock(myObject);
myMock.expects('method').once().withArgs('arg1').returns(42);
myObject.method('arg1'); // 42 döner
// Test: Metodun doğru argümanla bir kez çağrılıp çağrılmadığını kontrol eder.
myMock.verify();

Sinon’un Testlerde Kullanımı

Sinon, testlerinizi daha izole ve güvenilir hale getirir. Örneğin, bir fonksiyonun yan etkilerini test etmek istemiyorsanız, o fonksiyonu stub’layabilirsiniz. Spy’lar ise fonksiyonun nasıl çalıştığını incelemenize olanak tanır. Mocklar, belirli bir nesnenin metodlarını kontrol ederek daha karmaşık test senaryoları oluşturmanızı sağlar.Sinon

Sinon.js, JavaScript’te testler sırasında kullanabileceğiniz bir kütüphanedir ve özellikle fonksiyonları izleme, taklit etme ve değiştirme işlemlerini kolaylaştırır. Sinon’un üç temel yapı taşı vardır: stubs, mocks, ve spies. Bu terimler, test senaryolarında farklı amaçlar için kullanılır:

1. Spy (Casus):

  • Ne işe yarar? Spy, bir fonksiyonun nasıl çağrıldığını, kaç kez çağrıldığını, hangi argümanlarla çağrıldığını ve çağrıldığında ne döndüğünü izlemek için kullanılır.
  • Özellikler: Spy fonksiyonları, orijinal fonksiyonun davranışını değiştirmez; sadece onu izler ve raporlar.
  • Örnek Kullanım: Bir fonksiyonun belirli bir durumda çağrılıp çağrılmadığını test etmek için kullanılabilir.
const myFunction = sinon.spy();
myFunction('test');
// Test: myFunction'un bir argümanla çağrılıp çağrılmadığını kontrol edebilirsiniz.
sinon.assert.calledWith(myFunction, 'test');

2. Stub (Yer Tutucu):

  • Ne işe yarar? Stub, orijinal fonksiyonun yerini alarak onun yerine geçer. Stubs, fonksiyonun nasıl davranacağını kontrol etmek, belirli değerler döndürmek veya hata fırlatmak için kullanılabilir.
  • Özellikler: Stub, orijinal fonksiyonun davranışını tamamen değiştirir. Aynı zamanda bir Spy gibi fonksiyon çağrılarını izleyebilir.
  • Örnek Kullanım: Bir fonksiyonun dış bağımlılıklara sahip olduğu durumlarda, bu bağımlılıkların etkilerini izole etmek için kullanılabilir.
const myStub = sinon.stub();
myStub.returns(42);
console.log(myStub()); // 42 döner
// Test: myStub'un doğru değeri döndürüp döndürmediğini kontrol edebilirsiniz.
sinon.assert.returned(myStub, 42);

3. Mock (Model):

  • Ne işe yarar? Mock, bir nesne üzerindeki metotların nasıl çağrılması gerektiğini ve hangi sonuçları döndürmesi gerektiğini tanımlayarak, bu davranışları doğrulayan bir yapıdır. Mocklar, belirli bir fonksiyonun belirli sayıda çağrılmasını ve belirli argümanlarla çağrılmasını bekler.
  • Özellikler: Mock, bir Spy ve Stub’un kombinasyonudur. Davranışı kontrol ederken aynı zamanda fonksiyonun çağrılarını ve döndürdüğü değerleri izler.
  • Örnek Kullanım: Bir nesne üzerinde birden fazla metodun doğru sıralamada ve doğru argümanlarla çağrıldığını test etmek için kullanılabilir.
const myMock = sinon.mock(myObject);
myMock.expects('method').once().withArgs('arg1').returns(42);
myObject.method('arg1'); // 42 döner
// Test: Metodun doğru argümanla bir kez çağrılıp çağrılmadığını kontrol eder.
myMock.verify();

Sinon’un Testlerde Kullanımı

Sinon, testlerinizi daha izole ve güvenilir hale getirir. Örneğin, bir fonksiyonun yan etkilerini test etmek istemiyorsanız, o fonksiyonu stub’layabilirsiniz. Spy’lar ise fonksiyonun nasıl çalıştığını incelemenize olanak tanır. Mocklar, belirli bir nesnenin metodlarını kontrol ederek daha karmaşık test senaryoları oluşturmanızı sağlar.

--

--

Kodcular
Kodcular

Published in Kodcular

“Kodcular, Türkiye’nin En Büyük Medium Yazılım Topluluğudur.” Bu yayın yazılım üzerine üretilen blogların bir araya geldiği bir Türkçe yayındır.