Ruby RSpec 3验收测试方法,不带;其";阻碍

Ruby RSpec 3验收测试方法,不带;其";阻碍,ruby,csv,rspec,Ruby,Csv,Rspec,我怀疑如何在不使用its(:…)子句的情况下测试一个简单的CSV导入程序 在rspec2.x中,我的方法是将导入的对象设置为规范的主题,然后测试其(…)块中的每个属性。这是一个类似于验收的测试,但它对我很有用,我不想对我用来进行CSV解析的库进行单元测试,因为它实际上是一个微不足道的实现,所以我可以进行端到端测试 现在,有了RSpec3,我可以让transpec通过这个规范,但是我读到了,我认为RSpec3建议了一种不同的方法,对吗?那么你将如何测试它呢 我不认为有很多像这样丑陋的街区 desc

我怀疑如何在不使用
its(:…)
子句的情况下测试一个简单的CSV导入程序

在rspec2.x中,我的方法是将导入的对象设置为规范的主题,然后测试
其(…)
块中的每个属性。这是一个类似于验收的测试,但它对我很有用,我不想对我用来进行CSV解析的库进行单元测试,因为它实际上是一个微不足道的实现,所以我可以进行端到端测试

现在,有了RSpec3,我可以让transpec通过这个规范,但是我读到了,我认为RSpec3建议了一种不同的方法,对吗?那么你将如何测试它呢

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

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

its(:email) { should == "john.doe@email.com" }
因为他们做了完全相同的事情

我读到你需要测试“行为”,但是验收测试呢?建议怎么走?
谢谢

据我所知,Myron建议使用一行程序丰富的测试套件。使用此软件包,您的测试将如下所示:

Given(:email) { subject.email }

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

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

虽然
its
功能已从rspec核心中删除,但它已被放入一个可包含的gem,
rspec-its

我只想把这个gem包括进来,继续像您那样编写测试——我发现它们最具可读性


注:不相关,但我也总是使用
eq
而不是规范中的
=

它有什么问题,{code>有一些电子邮件{expect(subject.email)。给eq(“john”)_doe@email.com“)}?@urigassi-谢谢!是的,你说得对<代码>指定{expect(subject.email).to eq(“john”)_doe@email.com“)}是正确的解决方案。我想知道如何实现Myron Marston在我在问题中链接的文章中指出的。哦,天哪,那太难看了。嗯。。。我同意@sevensacat:D,我的意思是,如果这样做的话,我更喜欢rspec2.x语法!但感谢您编写此Uri:)