4
여기에 배열 blocks
과 onBlockClick
을 사용하는 함수 generateBlocks
이 있습니다. 각 오브젝트가 두 개의 특성 인 label
과 onClick
을 갖는 오브젝트의 배열을 리턴합니다.함수를 반환하는 함수를 테스트하는 방법은 무엇입니까?
function generateBlocks(blocks, onBlockClick){
return blocks.map(block => (
{
label: block.label,
onClick:()=>onBlockClick(block.name)
}
))
}
반환 값을 테스트 할 수 없습니다. 함수 참조가 다를 수 있기 때문에 내가 [[{label: "A", onClick:()=>onBlockClick("A")},...]
로 expected
을 만들 수 없습니다
const blocks = [{label: "A", name: "a"}, {label: "B", name: "b"}];
const onBlockClick = someFunction(){};
expect(generateBlocks(blocks, onBlockClick)).to.deep.equal(expected)
: 다음은 테스트 케이스입니다.
그렇다면 어떻게 rebactor generateBlocks 함수를 테스트 할 수 있도록 만들까요?
촬영 한 첫 번째 단계는 ** "어떻게 테스트합니까?"**입니다. 다음에 스스로에게 물어봐야 할 것은 ** "여기서 시험하고 싶은 것은 무엇입니까?"**입니다. 테스트하려는 항목을 실제로 알지 못하면 기존 코드를 리펙토링하여 테스트 할 수 없게 만드는 것이 어렵습니다. – byxor
음,'deep.equal'을 사용하지 않습니까? 모든 객체는'.label'을 가지고 있고 onclock()은'onBlockClick'을위한 identity 함수를 전달할 때 이름을 반환한다는 것을 주장하십시오. – Bergi
@Brandon 테스트 케이스에서 ** 반환 값 **을 명확하게 설명하는 테스트 케이스를 참조하십시오. –