Ruby on rails 在rspec rails中编写步骤?
我刚刚开始测试,我想知道如何为RSpec规范编写步骤,这样我就可以重用很多功能,比如登录等。通常测试应该彼此隔离;如果你的很多测试都需要做同样的事情,这表明它们在重复一些工作。但有时这是不可避免的——例如,您经常需要有一个登录用户在手边测试经过身份验证的东西 特别是在Ruby测试的情况下,很可能有人已经编写了一个库来解决您想要的特定问题。例如,在正确测试某个操作之前,通常需要一些现有数据,这就是为什么存在 如果您希望执行行为驱动的集成测试,该测试将遍历用户实际执行的所有步骤,那么您应该使用 如果您想在不同的地方重用方法,可以将共享代码放入Ruby on rails 在rspec rails中编写步骤?,ruby-on-rails,rspec,automated-tests,rspec-rails,Ruby On Rails,Rspec,Automated Tests,Rspec Rails,我刚刚开始测试,我想知道如何为RSpec规范编写步骤,这样我就可以重用很多功能,比如登录等。通常测试应该彼此隔离;如果你的很多测试都需要做同样的事情,这表明它们在重复一些工作。但有时这是不可避免的——例如,您经常需要有一个登录用户在手边测试经过身份验证的东西 特别是在Ruby测试的情况下,很可能有人已经编写了一个库来解决您想要的特定问题。例如,在正确测试某个操作之前,通常需要一些现有数据,这就是为什么存在 如果您希望执行行为驱动的集成测试,该测试将遍历用户实际执行的所有步骤,那么您应该使用 如果
spec/support
:
# spec/support/consumable_helper.rb
module ConsumableHelper
def consume(consumable)
calories = consumable.om_nom_nom
end
end
RSpec.configure do |config|
config.include ConsumableHelper
end
如果要在多个区域测试相同的行为,请使用的shared\u examples\u和it\u行为类似
:
shared_examples_for "a Consumable" do
it "should be delicious" do
subject.should be_delicious
end
it "should provide nutrition" do
subject.calories.should > 0
end
end
describe Fruit do
it_behaves_like "a Consumable"
end
describe Meat do
it_behaves_like "a Consumable"
end
通常,测试应该彼此隔离;如果你的很多测试都需要做同样的事情,这表明它们在重复一些工作。但有时这是不可避免的——例如,您经常需要有一个登录用户在手边测试经过身份验证的东西
特别是在Ruby测试的情况下,很可能有人已经编写了一个库来解决您想要的特定问题。例如,在正确测试某个操作之前,通常需要一些现有数据,这就是为什么存在
如果您希望执行行为驱动的集成测试,该测试将遍历用户实际执行的所有步骤,那么您应该使用
如果您想在不同的地方重用方法,可以将共享代码放入spec/support
:
# spec/support/consumable_helper.rb
module ConsumableHelper
def consume(consumable)
calories = consumable.om_nom_nom
end
end
RSpec.configure do |config|
config.include ConsumableHelper
end
如果要在多个区域测试相同的行为,请使用
的shared\u examples\u和it\u行为类似
:
shared_examples_for "a Consumable" do
it "should be delicious" do
subject.should be_delicious
end
it "should provide nutrition" do
subject.calories.should > 0
end
end
describe Fruit do
it_behaves_like "a Consumable"
end
describe Meat do
it_behaves_like "a Consumable"
end
无关的旁注。我喜欢用不定冠词<“消耗品”的代码>共享示例
和其行为类似于“消耗品”
。我只是觉得DSL读起来更好:)不相关的旁注。我喜欢用不定冠词<“消耗品”的代码>共享示例和其行为类似于“消耗品”
。我只是觉得DSL读起来更好:)