ruby-on-rails – Rspec控制器测试失败了撇号字符?
现在我使用“Faker”公司名称进行单元测试失败.
似乎期望(response.body).匹配(@ thing.name)是什么搞砸了. 在查看错误时,Faker公司的名称有时会包含“O’Brian Company”或“O’Hare Company”或类似名称. faker是编码字符串吗?因为我知道匹配编码的字符串不是一个好主意,我真的不想只在Factory im中指定一个特定的公司名称. 谢谢 解决方法
Faker不会为你做任何编码.它会给你一个像奥马利这样的字符串.但响应应该有
HTML转义(或其他类型,取决于格式),如O' Malley.您总是可以放置response.body来查看.
RSpec匹配匹配器真的设计为for either 如果您确实需要正则表达式,那么您应该小心使用不受控制的值来创建它.幸运的是Ruby有 在任何情况下,问题不在于名称周围的内容,而是名称如何转义.因此,在比较之前,您应该(1)解码响应或(2)编码faker字符串.哪个并不重要.两者都很简单: expect(CGI.unescapeHTML(response.body)).to eq @thing.name 要么 expect(response.body).to eq CGI.escapeHTML(@thing.name) 当然,如果你的响应是JSON,你应该用JSON等替换所有这些HTML转义的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |