Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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:使用或在expect.to eq语句中_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails Rspec:使用或在expect.to eq语句中

Ruby on rails Rspec:使用或在expect.to eq语句中,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我有一个rspec测试,我想确保只有两个值可以传递到我的实例变量中。我注意到,应该用一个块来满足,这似乎是测试两个结果都可以接受的更为普遍的方法,但我想实现一个expect()。到eq(),如下所示: it "only allows -2 or 2 as values" do expect (@note.value).to eq(2 or -2) end 对于我想要的rspec测试,这个语法正确吗?我理解should语句背后的想法,我更关心的是为什么should比使用expect.

我有一个rspec测试,我想确保只有两个值可以传递到我的实例变量中。我注意到,
应该用一个块来满足
,这似乎是测试两个结果都可以接受的更为普遍的方法,但我想实现一个
expect()。到eq()
,如下所示:

it "only allows -2 or 2 as values" do
    expect (@note.value).to eq(2 or -2)
  end
对于我想要的rspec测试,这个语法正确吗?我理解
should
语句背后的想法,我更关心的是为什么
should
比使用
expect.to eq
更可取(如果事实确实如此)

谢谢。

如中所述,您可以采用另一种方法,并在
expect
子句中获得可能的值。有了这个,看起来是这样的:

expect([2, -2]).to include(@note.value)

我还应该提到的是,你通常希望在测试中避免这种随机性。对你的期望要精确

您可以同时使用
两个匹配器:

expect(@note.value).to eq(2).or eq(-2)

有关详细信息。

谢谢。我理解
should
语句。我想知道为什么带有复合期望的
expect.to eq
语句可能不适合
should
语句,但事实并非如此。RSpec的
expect
语法现在是首选语法。谢谢,你能解释一下你在我的测试中看到的随机性吗?我只希望两个值传递true,其他所有值都返回false。您应该测试在何种情况下返回每个特定值-知道方法可以返回-2或2是无用的,如果它为某些输入返回2而不是-2,反之亦然。这就是随机性;)通常,您会测试一个特定的注释,您可以确定值为2,或者确定值为-2。类似于
expect(@first_note.value)的东西;期望(@second_note.value).为(-2)