Jest, basitliğe odaklanan keyifli bir JavaScript Test Çerçevesidir. Babel, TypeScript, Node, React, Angular, Vue ve daha fazlasını kullanan projelerle çalışır!
Jest'i kurmak için aşağıdaki komutu çalıştırın:
npm install --save-dev jest
package.json
dosyanıza aşağıdaki bölümü ekleyin:
{
"scripts": {
"test": "jest"
}
}
Jest'teki temel bir test şu şekilde görünür:
test('testin açıklaması', () => {
// Test kodunuz burada
expect(someValue).toBe(expectedValue);
});
Ayrıca test
yerine it
kullanabilirsiniz:
it('şunu yapmalı', () => {
// Test kodunuz burada
});
Jest, değerleri çeşitli şekillerde test etmenizi sağlayan "matchers" kullanır. İşte bazı yaygın matchers:
expect(2 + 2).toBe(4);
expect({name: 'John', age: 30}).toEqual({name: 'John', age: 30});
expect(null).toBeNull();
expect(undefined).toBeUndefined();
expect(true).toBeTruthy();
expect(false).toBeFalsy();
expect(value).toBeGreaterThan(3);
expect(value).toBeGreaterThanOrEqual(3.5);
expect(value).toBeLessThan(5);
expect(value).toBeLessThanOrEqual(4.5);
expect('team').not.toMatch(/I/);
expect('Christoph').toMatch(/stop/);
expect(['Apple', 'Banana', 'Orange']).toContain('Banana');
expect(() => {
throw new Error('Yanlış JDK kullanıyorsunuz');
}).toThrow();
expect(() => {
throw new Error('Yanlış JDK kullanıyorsunuz');
}).toThrow('Yanlış JDK kullanıyorsunuz');
expect(() => {
throw new Error('Yanlış JDK kullanıyorsunuz');
}).toThrow(/JDK/);
test('veri fıstık ezmesi', () => {
return fetchData().then(data => {
expect(data).toBe('fıstık ezmesi');
});
});
test('veri fıstık ezmesi', async () => {
const data = await fetchData();
expect(data).toBe('fıstık ezmesi');
});
test('veri fıstık ezmesi', done => {
function callback(data) {
try {
expect(data).toBe('fıstık ezmesi');
done();
} catch (error) {
done(error);
}
}
fetchData(callback);
});
test('bir fonksiyonun mock implementasyonu', () => {
const mock = jest.fn(() => 'bar');
expect(mock('foo')).toBe('bar');
expect(mock).toHaveBeenCalledWith('foo');
});
jest.mock('./myModule');
const myModule = require('./myModule');
test('şunu yapmalı', () => {
myModule.someFunction.mockReturnValue('mocked value');
expect(myModule.someFunction()).toBe('mocked value');
});
jest.useFakeTimers();
test('oyun bitmeden önce 1 saniye bekler', () => {
const timerGame = require('../timerGame');
timerGame();
expect(setTimeout).toHaveBeenCalledTimes(1);
expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 1000);
});
beforeAll(() => {
// Tüm testlerden önce çalışır
});
afterAll(() => {
// Tüm testlerden sonra çalışır
});
beforeEach(() => {
// Her testten önce çalışır
});
afterEach(() => {
// Her testten sonra çalışır
});
describe('şehirleri yemeklerle eşleştirme', () => {
test('Viyana <3 sosis', () => {
expect(isValidCityFoodPair('Viyana', 'Wiener Schnitzel')).toBe(true);
});
test('San Juan <3 plantain', () => {
expect(isValidCityFoodPair('San Juan', 'Mofongo')).toBe(true);
});
});
it('doğru şekilde render edilir', () => {
const tree = renderer
.create(<Link page="http://www.facebook.com">Facebook</Link>)
.toJSON();
expect(tree).toMatchSnapshot();
});
package.json
dosyanıza aşağıdaki bölümü ekleyin:
{
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "lcov", "text", "clover"]
}
}
Veya Jest çalıştırırken --coverage
bayrağını kullanın.
Test Açıklaması: Açık ve açıklayıcı test isimleri yazın.
Arrange-Act-Assert: Testlerinizi AAA modeline göre yapılandırın.
Uygulama Detaylarını Test Etmeyin: Modüllerinizin kamu API'lerini test etmeye odaklanın.
Tekrarı Önleyin: Kurulum ve temizlik kodunu tekrar etmemek için beforeEach
ve afterEach
kullanın.
Dış Bağımlılıkları Mock Edin: Test ettiğiniz kodu izole etmek için mocking kullanın.
Testleri Basit Tutun: Her test belirli bir davranışı doğrulamalıdır.
Testleri İzole Edin: Testler birbirine bağımlı olmamalıdır.
Debugging İçin test.only
Kullanın: Hata ayıklarken yalnızca bir testi çalıştırmak için test.only
kullanın.
Snapshot'ları Dikkatle Güncelleyin: Snapshot değişikliklerini güncellemeden önce her zaman gözden geçirin.
Sürekli Entegrasyon: Testlerinizi CI/CD sürecinizin bir parçası olarak çalıştırın.
2024 © Tüm hakları saklıdır - buraxta.com