ruby - 没有 "its" block 的 RSpec 3 验收测试方法

标签 ruby csv rspec

我对如何在不使用 its(:...) 子句的情况下测试简单的 CSV 导入器有疑问。

在 RSpec 2.x 中,我的方法是将导入的对象设置为我的规范的主题,然后在 its(...) block 中测试每个属性。这是一个类似验收的测试,但它对我很有帮助,我不想对我用来进行 CSV 解析的库进行单元测试,因为它确实是一个微不足道的实现,所以我对 end-to 没问题-结束测试。

现在,有了 RSpec 3,我可以通过 transpec 使这个规范通过,但我读到 the explanation about why the its block has been removed我认为 RSpec 3 建议采用不同的方法,对吗?那你会如何测试呢?

我不认为有很多像这样的丑陋街区

describe '#email' do
  subject { super().email }
  it { is_expected.to eq("john_doe@email.com") }
end

优于

its(:email) { should == "john.doe@email.com" }

因为他们做的事情完全一样。

我听说您需要测试“行为”,但验收测试如何?推荐的去这里的方式是什么? 谢谢!

最佳答案

据我了解,Myron 建议使用 rspec-given对于单行丰富的测试套件。使用此包,您的测试将如下所示:

Given(:email) { subject.email }

context "sign up" do
  When { subject.sign_up(email: "john.doe@email.com") }

  Then { email == "john.doe@email.com" }
end

关于ruby - 没有 "its" block 的 RSpec 3 验收测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527927/

相关文章:

ruby-on-rails - 升级到 Rails 5.0.6 后邮件 gem 不发送电子邮件

ruby - RSpec - 如何测试对象是否在 #initialize 中向自身发送消息

已定义方法的 Ruby 钩子(Hook)?

PowerShell Import-CSV 到 Export-CSV 类型转换

php - 如何仅从 CSV 文件数组中获取唯一值

仅当我们尝试导出到 csv 时,mysql 查询才会失败

ruby-on-rails - 如何使用 RSpec 测试具有嵌套属性的表单?

ruby-on-rails - 使用 Rspec、Capybara 等进行测试时如何解决 Rails 语言环境问题?

ruby - 类型错误 : can't define singleton (RSpec)

ruby-on-rails - 哪个版本的 eventmachine 可以在 Windows 中运行?