私はコンポーネントと比較したい場合は、私がレンダリングされたコンポーネントにtoJSON
せずにそれを呼び出す場合は、エラーがあるHTMLの段落に\ nを改行してテキストを変換コンポーネント私たちはなぜ必要なのですか?
Text.js
const Text = props => ((
<div>
{ props.paragraph.split('\n').map((line, index) => {
if (line.length === 0) return;
return <p key={index}>{ line }</p>;
})}
</div>
)
);
を書きます。 (私はtoMatchSnapshotに確認するとき、結果が同じであっても())
Text.spec.js
it('ignores \\n at last',() => {
const paragraphA = 'aa\nbbb\n';
const paragraphB = 'aa\nbbb';
const cA = renderer.create(<Text paragraph={paragraphA} />);
const cB = renderer.create(<Text paragraph={paragraphB} />);
expect(cA).toEqual(cB); // NG
expect(cA.toJSON()).toEqual(cB.toJSON()); // OK
});
冗談は
比較値が同じ構造にシリアライズ以下のような違いを伝えます。 代わりに
toJSON
を呼び出さずに内部オブジェクト構造を印刷する。
私はそれをグーグルが、私たちがここでtoJSON
を必要としないのはなぜtoJSON
- についての手掛かりを見つけることができませんでしたか?
- 何を
toJSON
一般的にしていますか? - toJSONについての参考情報はどこにありますか?
のEnv
が反応:16.1 冗談-CLI ": "事前に^ 21.2.1"
感謝を!!
詳細なコメントありがとうございます! まだ必要かどうかわかりません。しかし、toJSONなしでエラーが発生しました。 > - "_debugID":17、 > + "_debugID":9、 このため、私は2つのコンポーネントを比較することはできません。 その後、私はドキュメントを嫌いにします。ほとんどの場合、toSON()メソッドを呼び出してテストのためのコンポーネントをレンダリングします。だから私はこれが私の問題を解決できると思っていましたが、実際それは解決のようです。 「npmテスト」でエラーが見つかりませんでした この考え方について誤解がある場合は教えてください。 –
@KanUchidaはい、そうです。ジャスミンテストはオブジェクトで動作しますが、参照などでは機能しません。同じ構造を持っていても(しかし、メモリ内の他の場所に割り当てられていても)関数に渡されます。 Reactコンポーネントの.toJSON()メソッドを呼び出すと、これらの参照がなくても安全なオブジェクトリテラルを取得できます。 – reski
私はそれを得ました!ありがとう!私は深くあなたのおかげで理解しています:D –