4

ここでは、配列blocksと、関数onBlockClickをとる関数generateBlocksがあります。各オブジェクトが2つのプロパティーを持つオブジェクトの配列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) 

: は、ここでのテストケースです。

したがって、私はどのようにrefactor generateBlocks関数をテスト可能にするのですか?

+0

あなたが取った最初のステップは、**「どうすればテストするのですか?」です**。あなたが自分自身に尋ねるべき次のことは** "ここで何をテストしたいのですか?" **です。既存のコードをリファクタリングして、実際にテストしたいことがわからない場合は、テスト可能にするのは難しいです。 – byxor

+4

「deep.equal」は使用しないでください。すべてのオブジェクトに '.label'があり、' onclock() 'が' onBlockClick'のアイデンティティ関数を渡すときにその名前を返すということだけを主張してください。 – Bergi

+0

@Brandonテストケースを参照してください** **私がテストしたいものは** **戻り値**です。 –

答えて

0

関数refで.toString()メソッドを使用して、期待される文字列結果と比較することができます。

関連する問題