2017-09-16 10 views
-3

함수가 클래스 내부에 있고 단위 테스트에서 함수가 계산되면 오류가 발생합니다. 어떻게 TDD를 사용하여 함수를 계산 테스트?. 도와주세요.TDD를 사용하여이 기능을 단위 테스트하는 방법?

1.calculation.js

export default class calculation { 
    static calculate(a, b) { 
     var sum1 = this.addition(a, b); 
     var sub1 = this.subtract(a, b); 
     return { 
      sum1: sum1, 
      sub1: sub1 
     }; 
    } 
    static addition (a, b) { 
     var sum = a + b; 
     return sum; 
    } 
    static subtract (a, b) { 
     var sub = a - b; 
     return sub; 
    } 
} 

2.calculation.test.js

const calculate = require('../app/calculation'); 
describe('calculation',() => { 
    let result; 
    beforeEach(() => { 
     result = calculate.calculate(100, 50); 
    }); 
    it('correct sum of two number is',() => { 
     expect(result.sum1).toBe(150); 
    }); 
    it('correct subtract of two number is',() => { 
     expect(result.sub1).toBe(50); 
    }); 

}); 오류가

...

● 산출> 두 수의 정확한 합

TypeError: Cannot read property 'sum1' of undefined 

    at Object.<anonymous> (__tests__/calculation.test.js:8:14) 
    at tryCallTwo (node_modules/promise/lib/core.js:45:5) 
    at doResolve (node_modules/promise/lib/core.js:200:13) 
    at new Promise (node_modules/promise/lib/core.js:66:3) 
    at tryCallOne (node_modules/promise/lib/core.js:37:12) 
    at node_modules/promise/lib/core.js:123:15 

● 산출> 두 수의 정확한 빼기

TypeError: calculate.calculate is not a function 

    at Object.<anonymous> (__tests__/calculation.test.js:5:18) 
    at tryCallTwo (node_modules/promise/lib/core.js:45:5) 
    at doResolve (node_modules/promise/lib/core.js:200:13) 
    at new Promise (node_modules/promise/lib/core.js:66:3) 
    at tryCallOne (node_modules/promise/lib/core.js:37:12) 
    at node_modules/promise/lib/core.js:123:15 

● 산출> 올바른 빼기이다 두 숫자의 합은

TypeError: Cannot read property 'sub1' of undefined 

    at Object.<anonymous> (__tests__/calculation.test.js:11:14) 
    at tryCallTwo (node_modules/promise/lib/core.js:45:5) 
    at doResolve (node_modules/promise/lib/core.js:200:13) 
    at new Promise (node_modules/promise/lib/core.js:66:3) 
    at tryCallOne (node_modules/promise/lib/core.js:37:12) 
    at node_modules/promise/lib/core.js:123:15 

계산 ✕ 두 수의 정확한 합이다 (3MS) ✕ 두 수의 정확한 빼기 (이 1ms)

테스트 스위트 : 1 실패, 1 개 총 테스트 : 2 실패 2 총 스냅 : 0 총 시간 : 0.818 초, 예상 1 초 모든 테스트 스위트를 실행하십시오. npm ERR! 검사가 실패했습니다. 자세한 내용은 위를 참조하십시오.

+0

● 계산> 두 숫자의 정확한 합이 입니다. TypeError : 'sum'속성을 읽을 수 없습니다. 정의되지 않음 Object에서. doResolve (node_modules/promise/lib/core.js : 200 : 13)에서 (__tests __/calculation.test.js : 8 : 14) tryCallTwo (node_modules/promise/lib/core.js : 45 : 5) 새로운 약속하는 (node_modules/약속/LIB/core.js : 66 : 3)에 tryCallOne (node_modules/약속/LIB/core.js : 37 : 12) node_modules/약속/LIB/core.js에서 123 : 15 ● 계산> 두 숫자의 올바른 뺄셈은 –

+0

입니다. npm 테스트를 실행하면 오류가 발생합니다. 위의 모든 파일을 포함합니다. @ 니콜라스 타워. –

+0

result.sum1 및 result.sub1 변경 후 여기에서 같은 오류가 발생합니다. @Nicholas Tower –

답변

0

나는 당신이 틀린 질문을하고 있다고 생각합니다. 시험 주도 개발은 개발 프로세스입니다.

TDD로 무언가를 테스트하지 마십시오.이를 사용하여 무언가를 테스트하십시오.

나는 이것을 추천한다 excellent article on TDD. 나는 그것을 정리할 것이라고 생각한다.

+0

감사합니다. @bamse –