Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我们在比较两个组件时需要使用JSON?_Javascript_Reactjs_Testing_Jestjs_Enzyme - Fatal编程技术网

Javascript 为什么我们在比较两个组件时需要使用JSON?

Javascript 为什么我们在比较两个组件时需要使用JSON?,javascript,reactjs,testing,jestjs,enzyme,Javascript,Reactjs,Testing,Jestjs,Enzyme,我编写的组件将带换行符的文本转换为html段落 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> )

我编写的组件将带换行符的文本转换为html段落

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>
)
);
笑话告诉区别如下

比较的值序列化到同一结构。 打印内部对象结构而不调用
toJSON

我用谷歌搜索了一下,但找不到任何关于toJSON的线索

  • 为什么这里需要
    toJSON
  • toJSON
    通常做什么
  • 我在哪里可以找到关于toJSON的参考资料
环境

反应:16.1 jest cli“^21.2.1”

提前感谢!!

来自:

toJSON行为

如果正在序列化的对象有一个名为
toJSON
的属性,其值是一个函数,那么
toJSON
方法定制JSON字符串化行为:调用
toJSON
方法时返回的值将被序列化,而不是序列化的对象

示例:

//不带toJSON
常数a={
b:1
};
console.log(
JSON.stringify(a)

)
谢谢你的详细评论!我不知道是否有必要。但是我在没有toJSON的情况下遇到了以下错误。>-“_-debugID”:17,>+“_-debugID”“:9,正因为如此,我认为我不能仅仅比较两个组件。然后我就去跟医生开玩笑。几乎每次它都通过调用toJSON()方法呈现组件进行测试。所以我认为这可以解决我的问题,实际上它似乎解决了。我发现npm测试没有错误,你能告诉我我对这个想法是否有误解吗?@KanUchida是的,你是对的。Jasmine测试使用对象,但不使用引用,例如函数,即使它们具有相同的结构(但分配在内存中的其他位置)。总是在React组件上调用.toJSON()方法来获得安全的对象文本-没有这些引用。我明白了!谢谢!我深深地理解你:D
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
});