4장에서는 테스트를 작성하는 방법 보다는 테스트를 작성했을 때 효율이 좋아지는 이유에 대해 이야기 하고 있다.
모든 테스트를 완전히 자동화하고 그 결과까지 스스로 검사하게 만들자.
class Producer {
constructor(aProvince, data) {
this._province = aProvince;
this._name = data.name;
this._cost = data.cost;
this._production = data.production || 0;
}
get name() {
return this._name;
}
get cost() {
return this._cost;
}
set cost(arg) {
this._cost = parseInt(arg);
}
get production() {
return this._production;
}
set production(amountStr) { // 이부분 이다.
const amount = parseInt(amountStr);
const newProduction = Number.isNaN(amount) ? 0 : amount;
this._province.totalProduction += newProduction - this.production;
this._production = newProduction;
}
}
import { Province, sampleProvinceData } from './index.js';
import assert from 'assert';
// Mocha에서는 'describe' 함수를 사용하여 테스트 그룹을 정의함
// 첫 번째 인자: 테스트 그룹의 이름, 두 번째 인자: 테스트 그룹을 정의하는 콜백 함수
describe('province', function () {
// Mocha에서는 'it' 함수를 사용하여 개별 테스트 케이스를 정의함
// 첫 번째 인자는: 테스트 케이스의 이름, 두 번째 인자: 테스트 케이스를 정의하는 콜백 함수
it('shortfall', function () {
// 1. 픽스처 설정
// 여기서는 'Province' 클래스의 인스턴스 'asia'를 생성함
const asia = new Province(sampleProvinceData());
// 2. 검증
// Mocha에서는 'assert' 모듈을 사용하여 검증 로직을 작성함
// 여기서는 'assert.equal' 함수를 사용하여 'asia.shortfall' 값이 5인지 검증함
assert.equal(asia.shortfall, 5);
});
});
get shortfall() {
return this.demand - this.totalProduction * 2; // 오류 주입
}
자주 테스트하라. 작성 중인 코드는 최소한 몇 분 간격으로 테스트하고, 적어도 하루에 한 번은 전체 테스트를 돌려보자.
테스트는 위험 요인을 중심으로 작성해야 한다!
완벽하게 만드느라 테스트를 수행하지 못하느니, 불완전한 테스트라도 작성해 실행하는 게 낫다.
import { Province, sampleProvinceData } from './index.js';
import assert from 'assert';
describe('province', function () {
it('shortfall', function () {
const asia = new Province(sampleProvinceData());
assert.equal(asia.shortfall, 5);
});
it('profit', function() {
const asia = new Province(sampleProvinceData());
expect(asia.profit).equal(230)
});