4

여기에 배열 blocksonBlockClick을 사용하는 함수 generateBlocks이 있습니다. 각 오브젝트가 두 개의 특성 인 labelonClick을 갖는 오브젝트의 배열을 리턴합니다.함수를 반환하는 함수를 테스트하는 방법은 무엇입니까?

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 함수를 테스트 할 수 있도록 만들까요?

+0

촬영 한 첫 번째 단계는 ** "어떻게 테스트합니까?"**입니다. 다음에 스스로에게 물어봐야 할 것은 ** "여기서 시험하고 싶은 것은 무엇입니까?"**입니다. 테스트하려는 항목을 실제로 알지 못하면 기존 코드를 리펙토링하여 테스트 할 수 없게 만드는 것이 어렵습니다. – byxor

+4

음,'deep.equal'을 사용하지 않습니까? 모든 객체는'.label'을 가지고 있고 onclock()은'onBlockClick'을위한 identity 함수를 전달할 때 이름을 반환한다는 것을 주장하십시오. – Bergi

+0

@Brandon 테스트 케이스에서 ** 반환 값 **을 명확하게 설명하는 테스트 케이스를 참조하십시오. –

답변

0

함수 ref에서 .toString() 메서드를 사용하고 예상되는 문자열 결과와 비교할 수 있습니다.

관련 문제