Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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
Ruby on rails 你将如何进行部分测试,RSpec?_Ruby On Rails_Rspec - Fatal编程技术网

Ruby on rails 你将如何进行部分测试,RSpec?

Ruby on rails 你将如何进行部分测试,RSpec?,ruby-on-rails,rspec,Ruby On Rails,Rspec,假设我有一个非常复杂的视图和一个非常复杂的测试规范。 我想为它添加另一个功能,我想用RSpec推动开发 我想将联系人添加到Employee类 我在employee.html.erb的某个地方添加了一行: #lots of data rendered so far <%= render @employee.contacts %> #even more here #到目前为止呈现了大量数据 #这里更是如此 目前我真的不知道contact.html.erbpartial需要什么样子

假设我有一个非常复杂的视图和一个非常复杂的测试规范。 我想为它添加另一个功能,我想用RSpec推动开发

我想将联系人添加到Employee类

我在employee.html.erb的某个地方添加了一行:

#lots of data rendered so far

<%= render @employee.contacts %>

#even more here
#到目前为止呈现了大量数据
#这里更是如此
目前我真的不知道contact.html.erbpartial需要什么样子。为了直接从我的员工主视图spec中测试它,
show.html.erb_spec.rb
,我必须进行大量的设置,填充或模拟员工构建的不同数据库(项目、部门等)

我现在需要测试的只是部分,我不关心这个员工目前所属的部门、项目和其他事情,我也不想把时间花在模仿上。稍后我可能会将其添加到我的主规范中,并创建测试整个视图所需的所有内容,而不仅仅是jet

您是否有任何技术或方法来创建Employee实例,向其中添加一些联系人,并测试视图中的部分联系人? 不必担心员工的所有其他因素

IGEL答案更新:

我同意你的看法,对expect(…)进行测试。接收(:render)对于请求规范来说是100%足够了,如果我已经有了一个部分模板,我就不会做更多了。 我只是想走极端,让我的div和span通过RSpec。不是测试新特性的行为,而是它的外观。你认为这不值得吗


我根本不测试视图(结构),但我看到了一些文档,比如Michael不仅测试行为,还测试结构。我想我可以试一试:)

正确的答案是避免非常复杂的视图。如果视图中几乎没有逻辑,那么可能不需要测试它。将逻辑提取到中,这样更易于测试。我不使用视图测试来测试我的视图,因为维护它们通常没有多大乐趣。一些特性规范在这里给了我足够的安全性

如果仍要对其进行测试,则可能需要使用预期参数调用
render

expect(view).to receive(:render).with(@employee.contacts)
不确定该视图是否可通过
视图
访问

PS:不要只是避免编写复杂的视图,还要避免编写复杂的代码。这真的很难,但也绝对值得花时间。几乎每个开发人员都可以将一些可能有效的东西拼凑在一起,但创建一些易于理解和更改的东西将帮助每个人,包括你的未来。代码的读取频率是编写/更改的十倍,因此我们必须对此进行优化

我没有时间写一封短信,所以我写了一封长信。 --马克吐温


我更新了一个问题,澄清了我为什么要测试它。