Proje Testleri
Öncesi: Proje Sınıfları
JavaScript test kütüphanesi olarak seçenekler bir hayli fazlaydı. Bunları elemek için öncellikle hangilerinin daha yaygın olarak kullanıldıklarına göz attım, Jasmine ve Mocha kütüphanelerinin bir hayli populer olduğunu gözlemledim ve bu ikisi arasında seçim yapmaya karar verdim. Öncelikle iki kütüphanede tek başlarına yeterli olmayıp ek kütüphaneler kurmak gerekiyordu. Jasmine tek başına bir test runner içermediği ve mocha kütüphanesinin yazılımı bana daha anlaşılır geldiği için Mocha üzerinden gitmeye karar verdim.
Mocha test kütühanesi kendi içerisinde bir Assertion kütüphanesi ile gelmediği için Chai adında bir yardımcı kütüphane kurmak gerekiyordu. Bu durumda aşağıda ki gibi kurulumları gerçekleştirdim.
Kurulumlar tamamlandıktan sonra "npm test" komutunun çalışabilmesi için "package.json" dosyama aşağıda ki satırı ekledim.
Sıra testlerimi yazmaya gelmişti ouşturduğum test dosyasına ES6 yazılım kurallarına uygun olarak sınıflarımı import ettim ve her şeyin yolunda olduğuna emin olmak için dummy bir test fonksiyonu ekledim.
Kayıt ettikten sonra aşağıdaki biçimde çalıştırdım.
ES6 kullanıyordum ama import kullanamıyor muydum, o halde mocha benim ES6 uyumlu bir kod yazdığımı anlamamıştı, mocha ya bunu bir şekilde bildirmeliydim. Biraz kurcaladıktan sonra eksik olan kütüphanenin "babel-register" olduğunu anladım ve o kütüphaneyi aşağıdaki biçimde projeme dahil ettim.
Ve package.json dosyamda "test" yazan parametreyi aşağıdaki biçimde değiştirdim;
Projeye test kütüphanesini ekleyebilmiştim, sırada derlenen javascript dosyalarımı nasıl minify yapabileceğim konusu vardı, bunun için hangi kütüphaneyi kullanmalıydım.
JavaScript test kütüphanesi olarak seçenekler bir hayli fazlaydı. Bunları elemek için öncellikle hangilerinin daha yaygın olarak kullanıldıklarına göz attım, Jasmine ve Mocha kütüphanelerinin bir hayli populer olduğunu gözlemledim ve bu ikisi arasında seçim yapmaya karar verdim. Öncelikle iki kütüphanede tek başlarına yeterli olmayıp ek kütüphaneler kurmak gerekiyordu. Jasmine tek başına bir test runner içermediği ve mocha kütüphanesinin yazılımı bana daha anlaşılır geldiği için Mocha üzerinden gitmeye karar verdim.
Mocha test kütühanesi kendi içerisinde bir Assertion kütüphanesi ile gelmediği için Chai adında bir yardımcı kütüphane kurmak gerekiyordu. Bu durumda aşağıda ki gibi kurulumları gerçekleştirdim.
$ npm install --global mocha $ npm install --save-dev mocha $ npm install --global chai $ npm install --save-dev chai $ mkdir test $ touch test/test.jsYukarıdaki kısımda yer alan "--global", " --save-dev" parametrelerinin ne işe yaradığı konusuna girecek olur isek; ilk parametre ile yaptığımız kurulum bilgisayarımıza projemizden bağımsız bir şekilde global düzeyde kurmaya yardımcı olur, bu ise mocha testlerini komut satırından çalıştırmamıza yardımcı olur; ikinci parametre ile yaptığımız kurulum ise mocha yı söz konusu projemiz için package.json dosyamıza bağımlılık olarak eklemeye yardımcı olur.
Kurulumlar tamamlandıktan sonra "npm test" komutunun çalışabilmesi için "package.json" dosyama aşağıda ki satırı ekledim.
... "scripts": { "build": "babel src -d dist", "test": "mocha --recursive ./test", } ...
Sıra testlerimi yazmaya gelmişti ouşturduğum test dosyasına ES6 yazılım kurallarına uygun olarak sınıflarımı import ettim ve her şeyin yolunda olduğuna emin olmak için dummy bir test fonksiyonu ekledim.
/** * */ import { notEqual, equal } from 'assert'; import { expect } from 'chai'; import { should } from 'chai'; import Simple from '../src/org/example/simple'; import Operator from '../src/org/example/operator'; import Exception from '../src/org/example/exception'; describe('Dummy String Test', () => { it('should return number of charachters in a string', () => { notEqual("Hello".length, 4); }); it('should return first charachter of the string', () => { equal("Hello".charAt(0), 'H'); }); }); //...
Kayıt ettikten sonra aşağıdaki biçimde çalıştırdım.
$ npm test $ ... //bir suru hata $ SyntaxError: Cannot use import statement outside a module $
ES6 kullanıyordum ama import kullanamıyor muydum, o halde mocha benim ES6 uyumlu bir kod yazdığımı anlamamıştı, mocha ya bunu bir şekilde bildirmeliydim. Biraz kurcaladıktan sonra eksik olan kütüphanenin "babel-register" olduğunu anladım ve o kütüphaneyi aşağıdaki biçimde projeme dahil ettim.
$ npm install --save-dev @babel/register
Ve package.json dosyamda "test" yazan parametreyi aşağıdaki biçimde değiştirdim;
... "scripts": { "build": "babel src -d dist", "test": "mocha --recursive ./test --require @babel/register" } ...Çalıştıdım, ekranda testimin çalıştırıldığına dair bilgileri gördüm.
$ npm test $ ... > js-calculator@1.0.0-SNAPSHOT test D:\Development\workshop\js-calculator > mocha --recursive ./test --require @babel/register Dummy String Test √ should return number of charachters in a string √ should return first charachter of the string
Projeye test kütüphanesini ekleyebilmiştim, sırada derlenen javascript dosyalarımı nasıl minify yapabileceğim konusu vardı, bunun için hangi kütüphaneyi kullanmalıydım.
Yorumlar
Yorum Gönder