Ruby on rails 3.2 Rails rspec factorygirl多重化测试

Ruby on rails 3.2 Rails rspec factorygirl多重化测试,ruby-on-rails-3.2,rspec2,factory-bot,Ruby On Rails 3.2,Rspec2,Factory Bot,可以在rspec中测试多重化功能吗 let(:schedule) { FactoryGirl.create(:schedule) } Failure/Error: it { should have_selector('h1', text: pluralize(Schedule.count.to_s, "schedule")) } NoMethodError: undefined method `pluralize' for #<RSpec::Core::ExampleGroup:

可以在rspec中测试多重化功能吗

let(:schedule) { FactoryGirl.create(:schedule) }

Failure/Error: it { should have_selector('h1', text: pluralize(Schedule.count.to_s, "schedule")) }
 NoMethodError:
   undefined method `pluralize' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xb607068c>

你问题的答案是。。。某种程度上。Rails提供了使用pluralize和rspec-Rails的功能,假设您正在使用rspec-Rails,那么您就可以根据需要调用Rails方法。如果这是一个视图测试,它看起来像什么,您可以键入如下内容:

it { should have_selector('h1', text: view.pluralize(Schedule.count.to_s, "schedule")) }
it { pluralize(1, "schedule").should == "1 schedule" }
it { pluralize(0, "schedule").should == "0 schedules" }
这里的关键是在多重化之前添加视图。

我想强调的是,在测试时,在视图测试中测试助手方法不是一个好主意。如果您真的想测试pluralize本身,最好在helper规范中进行测试。执行以下操作:

it { should have_selector('h1', text: view.pluralize(Schedule.count.to_s, "schedule")) }
it { pluralize(1, "schedule").should == "1 schedule" }
it { pluralize(0, "schedule").should == "0 schedules" }

通过这种方式,您可以确定结果,并在其他测试中进行假设,然后测试正确的结果。实际上,这将不可避免地使测试变得更好,因为如果像pluralize这样的助手发生了更改,那么您有两个测试可以警告这种更改。然后您可以相应地进行调整。只是想一想。

你的问题的答案是。。。某种程度上。Rails提供了使用pluralize和rspec-Rails的功能,假设您正在使用rspec-Rails,那么您就可以根据需要调用Rails方法。如果这是一个视图测试,它看起来像什么,您可以键入如下内容:

it { should have_selector('h1', text: view.pluralize(Schedule.count.to_s, "schedule")) }
it { pluralize(1, "schedule").should == "1 schedule" }
it { pluralize(0, "schedule").should == "0 schedules" }
这里的关键是在多重化之前添加视图。

我想强调的是,在测试时,在视图测试中测试助手方法不是一个好主意。如果您真的想测试pluralize本身,最好在helper规范中进行测试。执行以下操作:

it { should have_selector('h1', text: view.pluralize(Schedule.count.to_s, "schedule")) }
it { pluralize(1, "schedule").should == "1 schedule" }
it { pluralize(0, "schedule").should == "0 schedules" }

通过这种方式,您可以确定结果,并在其他测试中进行假设,然后测试正确的结果。实际上,这将不可避免地使测试变得更好,因为如果像pluralize这样的助手发生了更改,那么您有两个测试可以警告这种更改。然后您可以相应地进行调整。只是想一想。

我是RoR和RSpec的新手,我有一个类似的错误,启动此线程的伙伴:

失败:

 1) Static Pages Home Page for signed-in users should show the total feeds
 Failure/Error: expect(page).to have_content(pluralize(user.feed.count, 'micropost'))
 NoMethodError:
     undefined method `pluralize' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1::Nested_2:0x007fade8f35938>
     # ./spec/requests/static_pages_spec.rb:39:in `block (4 levels) in <top (required)>'
我的测试很好

希望这能帮助别人


iVieL.

我是RoR和RSpec的新手,我有一个类似的错误,启动此线程的伙伴:

失败:

 1) Static Pages Home Page for signed-in users should show the total feeds
 Failure/Error: expect(page).to have_content(pluralize(user.feed.count, 'micropost'))
 NoMethodError:
     undefined method `pluralize' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1::Nested_2:0x007fade8f35938>
     # ./spec/requests/static_pages_spec.rb:39:in `block (4 levels) in <top (required)>'
我的测试很好

希望这能帮助别人


iVieL.

您似乎没有在测试多重化方法。您似乎正在测试某些html是否存在,并且正在使用pluralize方法来帮助您。你是在问是否有可能用多元化方法进行测试吗?是的。有可能测试“多元化”吗?您似乎没有测试多元化方法。您似乎正在测试某些html是否存在,并且正在使用pluralize方法来帮助您。你是在问是否有可能用多元化方法进行测试吗?是的。可以测试“多元化”吗?好的。谢谢你,埃里克。现在我的助手规范中已经有了复数化的测试。:)好啊谢谢你,埃里克。现在我的助手规范中已经有了复数化的测试。:)非常感谢。这对我帮助很大。我建议您可以通过针对特定元素
expect(第页)来改进它。使用_选择器(“第span节”,文本:“micropost”。复数化(user.feed.count))
谢谢!这对我帮助很大。我建议您可以通过针对特定元素
expect(第页)来改进它。要有_选择器(“第span节”,文本:“microspost”。复数化(user.feed.count))