Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在rspec rails中编写步骤?_Ruby On Rails_Rspec_Automated Tests_Rspec Rails - Fatal编程技术网

Ruby on rails 在rspec rails中编写步骤?

Ruby on rails 在rspec rails中编写步骤?,ruby-on-rails,rspec,automated-tests,rspec-rails,Ruby On Rails,Rspec,Automated Tests,Rspec Rails,我刚刚开始测试,我想知道如何为RSpec规范编写步骤,这样我就可以重用很多功能,比如登录等。通常测试应该彼此隔离;如果你的很多测试都需要做同样的事情,这表明它们在重复一些工作。但有时这是不可避免的——例如,您经常需要有一个登录用户在手边测试经过身份验证的东西 特别是在Ruby测试的情况下,很可能有人已经编写了一个库来解决您想要的特定问题。例如,在正确测试某个操作之前,通常需要一些现有数据,这就是为什么存在 如果您希望执行行为驱动的集成测试,该测试将遍历用户实际执行的所有步骤,那么您应该使用 如果

我刚刚开始测试,我想知道如何为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读起来更好:)