[javascript] Ramda를 활용한 테스트 주도 개발(TDD)

테스트 주도 개발(Test-Driven Development, TDD)은 소프트웨어 개발 방법론 중 하나로, 테스트를 먼저 작성한 후에 그에 맞춰 실제 코드를 작성하는 방식입니다. TDD는 코드 품질을 향상시키고 버그를 줄이는데 효과적인 방법으로 알려져 있습니다.

이번에는 TDD를 실제로 구현하는데 도움을 주는 Ramda 라이브러리에 대해 알아보겠습니다. Ramda는 함수형 프로그래밍을 지원하는 자바스크립트 라이브러리로, 함수 조합과 커링(currying) 등의 기능을 제공합니다.

Ramda 설치

Ramda를 사용하기 위해, 먼저 프로젝트에 Ramda를 설치해야 합니다. 다음의 명령어를 사용하여 npm을 통해 Ramda를 설치합니다.

npm install ramda

TDD 예제

다음은 간단한 TDD 예제를 통해 Ramda를 활용하는 방법을 보여줍니다. 예제는 자바스크립트로 작성되었으며, Ramda 라이브러리를 사용하여 함수를 조합하고 테스트 케이스를 작성합니다.

const R = require('ramda');

// Ramda를 활용한 테스트 주도 개발 예제
describe('Ramda를 활용한 TDD 예제', () => {
  it('두 수를 더하는 add 함수를 작성한다', () => {
    const add = (a, b) => a + b;
    const curriedAdd = R.curry(add);

    const add2 = curriedAdd(2);
    expect(add2(3)).toEqual(5);
  });

  it('배열에서 홀수만 필터링하는 함수를 작성한다', () => {
    const filterOddNumbers = R.filter((num) => num % 2 !== 0);

    expect(filterOddNumbers([1, 2, 3, 4, 5])).toEqual([1, 3, 5]);
    expect(filterOddNumbers([2, 4, 6, 8, 10])).toEqual([]);
  });
});

위의 예제에서는 add 함수와 filterOddNumbers 함수를 작성하는 과정을 보여줍니다. 먼저 add 함수는 두 수를 더하는 기본적인 함수이며, R.curry 함수를 사용하여 커링된 함수인 curriedAdd를 생성합니다. 이렇게 생성된 curriedAdd 함수를 활용하여 원하는 값을 전달하여 덧셈을 수행할 수 있습니다.

또한, filterOddNumbers 함수는 배열에서 홀수만 필터링하는 함수입니다. R.filter 함수를 사용하여 필터링 조건을 정의하고, 해당 함수를 활용하여 홀수만을 필터링할 수 있습니다.

정리

Ramda를 활용한 테스트 주도 개발은 함수형 프로그래밍과 함께 사용하여 코드의 가독성을 향상시키고 재사용성을 높일 수 있는 장점을 가지고 있습니다. 이를 통해 테스트 주도 개발 방법론을 효과적으로 적용할 수 있습니다.

Ramda의 다양한 기능을 활용하여 테스트 주도 개발에 도전해보세요. TDD는 코드의 안정성과 유지보수성을 향상시키는데 큰 도움이 될 것입니다.

참고 자료