【Jest】Unit Test, Integration Test의 차이를 정리한다
11104 단어 Jest
Unit Test vs Integration Test: What's the Difference? 을 읽고 얻은 지견을 정리하고 있습니다.
이번에는 아래의
add
함수와 total
함수에 대한 테스트 코드를 작성합니다.App.js
export const add = (x, y) => x + y
export const total = (shipping, subtotal) => {
return '$' + add(shipping, subtotal)
}
Unit Test
The idea behind Unit Testing is to test each part of the program and show that the individual parts are correct.
개별 부분이 옳은 것을 나타내는 것이기 때문에, 여기서는 add
함수에 대한 테스트를 가리키고 있습니다.
App.test.jsimport { add } from './App'
test('add', () => {
expect(add(1, 2)).toBe(3)
expect(add(3, 6)).toBe(9)
expect(add(3, 6)).toBe(10)
})
결과는 이렇게 됩니다.
add(3, 6)
의 반환값이 10이 아니기 때문에 테스트가 통과하고 있지 않다는 것을 알기 때문에,
It is kind of White Box Testing
입니다.
통합 테스트
combine modules in the application and test as a group to see that they are working fine
모듈을 조합해 정상적으로 기능하는지를 나타내는 것이므로, 여기에서는 add
함수가 조합되고 있는 total
함수에 대한 테스트를 가리키고 있습니다.
App.test.jsimport { total } from './App'
test('total', () => {
expect(total(5, 20)).toBe('$25')
})
이 테스트는 통과합니다.
테스트 코드는 그대로 app関数
가 의도하지 않은 동작이 되었을 때를 확인합시다.
App.jsexport const add = (x, y) => x - y // 間違えて引き算にしてしまった
export const total = (shipping, subtotal) => {
return '$' + add(shipping, subtotal)
}
테스트는 통과하지 않습니다.
다음으로, 테스트 코드는 그대로, total
함수가 의도하지 않은 동작이 되었을 때를 확인합시다.
App.jsexport const add = (x, y) => x + y
export const total = (shipping, subtotal) => {
return '#' + add(shipping, subtotal) // 間違えて # にしてしまった
}
이 경우에도 테스트는 통과하지 않습니다.
이번은 간단한 코드이므로, 어느 함수가 의도하지 않은 동작이 되어 있는지는 알 수 있다고 생각합니다만, 보다 큰 코드가 되어 가면 모릅니다.
내부적으로 어느 함수에 버그의 책임이 있는지 모르기 때문에,
It is kind of Black Box Testing
입니다.
덤
이번 경우, total
함수의 일을, 조합하는 것만 하면 평화가 된다. (이것이 느슨하게 결합?)
App.jsexport const add = (x, y) => x + y
export const doller = () => '$'
export const total = (shipping, subtotal) => {
return doller() + add(shipping, subtotal)
}
App.test.jsimport { add, doller, total } from './App'
test('add', () => {
expect(add(1, 2)).toBe(3)
})
test('doller', () => {
expect(doller()).toBe('$')
})
// addとdollerが通ったら必然的に通るから必要ない?
test('total', () => {
expect(total(5, 20)).toBe('$25')
})
Reference
이 문제에 관하여(【Jest】Unit Test, Integration Test의 차이를 정리한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wafuwafu13/items/a0428c1451f7e8221334
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import { add } from './App'
test('add', () => {
expect(add(1, 2)).toBe(3)
expect(add(3, 6)).toBe(9)
expect(add(3, 6)).toBe(10)
})
combine modules in the application and test as a group to see that they are working fine
모듈을 조합해 정상적으로 기능하는지를 나타내는 것이므로, 여기에서는
add
함수가 조합되고 있는 total
함수에 대한 테스트를 가리키고 있습니다.App.test.js
import { total } from './App'
test('total', () => {
expect(total(5, 20)).toBe('$25')
})
이 테스트는 통과합니다.
테스트 코드는 그대로
app関数
가 의도하지 않은 동작이 되었을 때를 확인합시다.App.js
export const add = (x, y) => x - y // 間違えて引き算にしてしまった
export const total = (shipping, subtotal) => {
return '$' + add(shipping, subtotal)
}
테스트는 통과하지 않습니다.
다음으로, 테스트 코드는 그대로,
total
함수가 의도하지 않은 동작이 되었을 때를 확인합시다.App.js
export const add = (x, y) => x + y
export const total = (shipping, subtotal) => {
return '#' + add(shipping, subtotal) // 間違えて # にしてしまった
}
이 경우에도 테스트는 통과하지 않습니다.
이번은 간단한 코드이므로, 어느 함수가 의도하지 않은 동작이 되어 있는지는 알 수 있다고 생각합니다만, 보다 큰 코드가 되어 가면 모릅니다.
내부적으로 어느 함수에 버그의 책임이 있는지 모르기 때문에,
It is kind of Black Box Testing
입니다.
덤
이번 경우, total
함수의 일을, 조합하는 것만 하면 평화가 된다. (이것이 느슨하게 결합?)
App.jsexport const add = (x, y) => x + y
export const doller = () => '$'
export const total = (shipping, subtotal) => {
return doller() + add(shipping, subtotal)
}
App.test.jsimport { add, doller, total } from './App'
test('add', () => {
expect(add(1, 2)).toBe(3)
})
test('doller', () => {
expect(doller()).toBe('$')
})
// addとdollerが通ったら必然的に通るから必要ない?
test('total', () => {
expect(total(5, 20)).toBe('$25')
})
Reference
이 문제에 관하여(【Jest】Unit Test, Integration Test의 차이를 정리한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wafuwafu13/items/a0428c1451f7e8221334
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
export const add = (x, y) => x + y
export const doller = () => '$'
export const total = (shipping, subtotal) => {
return doller() + add(shipping, subtotal)
}
import { add, doller, total } from './App'
test('add', () => {
expect(add(1, 2)).toBe(3)
})
test('doller', () => {
expect(doller()).toBe('$')
})
// addとdollerが通ったら必然的に通るから必要ない?
test('total', () => {
expect(total(5, 20)).toBe('$25')
})
Reference
이 문제에 관하여(【Jest】Unit Test, Integration Test의 차이를 정리한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wafuwafu13/items/a0428c1451f7e8221334텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)