Proje Sınıfları

Öncesi: Proje Başlangıcı

VSCode uygulamasını çalıştırdıktan sonra workspace olarak "workshop" dizinimi seçtim, VSCode uygulamasının terminali üzerinden aşağıdaki adımları izledim, sınıflarımı oluşturacağım 4 adet dosya oluşurdum. Tek dosya üzerinde de bu sınıfları oluşturabilirdim ancak 4 güzel bir sayı olduğunu düşündüm (aslında düşünmedim import ve extends kavramlarını da denemek istedim).
$ cd ./js-calculator
$ touch calculator.js simple.js exception.js operator.js

Daha sonra editor üzerinden bu dosyaları açıp, kodlarımı oluşturmaya başladım. Sınıf tanımlarının ES6 ile "export default class" ile başladığını biliyordum. "class" olarak tanımlar isek sınıf tanımızın sonunda "export.default=SINIF_ADI" biçiminde bir ek satır yazmamız gerekeceğinden kısa olmasını istedim ve aşağıdaki yapıyı oluşturdum.
/**
 * exception.js
 */
export default class Exception { ... }

/**
 * calculate.js
 */
export default class Calculator { ... }
...

/**
 * simple.js
 */
import Calculator from './calculator';
import Operator from './operator';

export default class Simple extends Calculator { ... }
...
/**
 * operator.js
 */
import Exception from './exception';

export default class Operator { ... }
...

Artık sınıflarımı derleyip nasıl bir dönüşüm geçireceğini görebilirdim. VSCode uygulamasının terminal bölümüne geçtim ve aşağıda ki komutu verdim.
$ npm run build

Ve tadaaaa tabi ki derlenmemişti. Zaten ilk defa yazdığımda oluşsa bir hata olduğundan emin olacaktım. Bir kaç bağımlılığımın eksik olduğunu belirtti, bunlarıda projeme eklemeliydim,

$ npm install --save-dev @babel/preset-env  
$ npm install --save-dev @babel/plugin-proposal-class-properties 
$ npm install --save-dev @babel/plugin-transform-object-assign 
$ npm install --save-dev @babel/plugin-transform-runtime 

"package.json" dosyası bir kez daha değişmişti ve mutlu olmuştum.

{
...
   "devDependencies": {
    "@babel/cli": "^7.8.4",
    "@babel/core": "^7.9.6",
    "@babel/plugin-proposal-class-properties": "^7.8.3",
    "@babel/plugin-transform-object-assign": "^7.8.3",
    "@babel/plugin-transform-runtime": "^7.9.6",   
    "@babel/preset-env": "^7.9.6"
  }
}

Yeniden derleme komutunu çalıştırdım.

$ npm run build

Veee tabi ki derlenmemişti. Verdiği hatayı bilmediğim için ne olabilir diye araştıdığımda aslında projemin derlenmesi için ".babelrc" dosyamın olması gerektiğini öğrendim, bir tane oluşturdum.

$ touch .babelrc

Ve içini düzenledim.

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "bugfixes": true,
        "loose": true
      }      
    ]
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties"
  ]
}

Yeniden derleme komutunu çalıştırdım (Hakkımız 3 olduğu için).

$ npm run build

Ve tabii ki dist/ dizinimin içinde derlenmiş dosyalar oluşturulmuştu. Peki yazdığım sınıflar ve metodlar düzgün çalışacak mıydı. Tamam ES6 söz dizimine uygun kodu yazıp derlemiştik ama işlevler yerine getirliyor muydu? Bunu nasıl öğrenecektim. Basit uygulamamı göz gezdirerek aklımdan bile test edebilecekken, birim birim test etmek için Birim (Unit) Test eklemeye karar verdim. Birim uygulamamızın en küçük yapısı idi ve işlev kendi başına doğru çalışmalıydı ki uygulamanın bütünü doğru çalışma ihtimali yüksek olsun.

Düşüncesi çok hoşuma gitti; ancak ufak bir detay vardı! Bunu nasıl sağlayacaktım nodeJS ile Birim/Entegrasyon testleri nasıl yazılıyor, hatta nasıl çalıştırılıyordu...

Yorumlar

Bu blogdaki popüler yayınlar

Proje Testleri

Proje Başlangıcı

MySQL Error Code: 1175