【问题标题】:ruby rspec conversion from "should" to "expect" with blockruby rspec从“应该”到“期望”的块转换
【发布时间】:2014-10-14 00:42:18
【问题描述】:

我正在处理一组 rspec 程序,而 pc 似乎迫使我将“应该”问题转换为“期望”问题。
已经能够处理大部分,但是在以下 rspec 设置中遇到了问题。

大多数其他“应该”格式都涉及答案应该 == 某事,并且很容易转换为 expect(passed_in_value).to eql(returned_value)。
不过,在这种情况下,我相信它正在传递一个块以添加到给定的数字,但是,我无法将其转换为 expect(end).to eql(6) 或任何返回值。

看看,如果你有什么想法,请转发

it "adds one to the value returned by the default block" do
  adder do
    5
  end.should == 6
end

it "adds 3 to the value returned by the default block" do
  adder(3) do
    5
  end.should == 8
end

【问题讨论】:

  • 我猜你升级到了新版本的rspec。您是否看过 github.com/yujinakayama/transpec,因为它在自动转换所有规格方面做得非常好
  • 嗨,Doon,感谢您的链接和想法。知道我可能需要这样做,但过去在迁移到较新版本时遇到了问题,只是想得到这个,这样我就可以测试我的程序了。完成我需要做的所有程序后,将带您进行升级..再次感谢
  • 我只是通过 PC 来强迫我转换应该期望的。当您点击新版本时会发生这种情况。看来你已经升级了。

标签: ruby-on-rails ruby rspec


【解决方案1】:

有几种方法可以做到这一点。

结果=加法器(3)做 5 结尾 期望(结果).to eq(8) 期待做 加法器(3)做 5 结尾 end.to eq(8) 块 = -> 做 5 结尾 期望(加法器 3,&block).to eq(8)

来自 respond_to 的 cmets 示例:

它“有一个#sum 方法” [].should respond_to(:sum) #旧语法 expect([]).to respond_to(:sum) #新语法 结尾

【讨论】:

  • 感谢 Alex.... 使用了第一个并且工作起来就像一个魅力.. 或者至少我编写的测试它的代码有效。当然感谢帮助..
  • 做了一堆 rspec 问题。关于应该/期望转换问题只有一个或两个可能的问题..这是另一个:**********描述“#sum”做它“有一个#sum方法”做期望([]) .to eql(true).should respond_to(:sum) end ********* 我想关于这个测试的另一个一般问题......你能用一般术语或非常准确地解释他们正在寻找什么?再次感谢帮助
  • 哦,你在一个声明中混合了期望和应该。你可以只用应该重写它吗?因为我看不懂。
  • describe "#sum" do it "有一个#sum 方法" do [].should respond_to(:sum) end
  • 在这种情况下,您可以通过单击复选标记将我的答案作为正确答案)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多