在rspec中测试模块

在rspec中测试模块的最佳实践是什么? 我有一些模块被包含在少数模型中,现在我只对每个模型进行重复测试(几乎没有区别)。 有没有办法干掉它?


rad方式=>

let(:dummy_class) { Class.new { include ModuleToBeTested } }

或者,您可以使用模块扩展测试类:

let(:dummy_class) { Class.new { extend ModuleToBeTested } }

使用'let'比使用实例变量在before(:each)中定义虚拟类要好,

何时使用RSpec let()?


什么话筒说。 这是一个简单的例子:

模块代码...

module Say
  def hello
    "hello"
  end
end

spec片段...

class DummyClass
end

before(:each) do
  @dummy_class = DummyClass.new
  @dummy_class.extend(Say)
end

it "get hello string" do
  expect(@dummy_class.hello).to eq "hello"
end

对于可以单独测试或嘲笑课程的模块,我喜欢以下几点:

模块:

module MyModule
  def hallo
    "hallo"
  end
end

规格:

describe MyModule do
  include MyModule

  it { hallo.should == "hallo" }
end

劫持嵌套示例组似乎是错误的,但我喜欢简洁。 有什么想法吗?

链接地址: http://www.djcxy.com/p/59293.html

上一篇: Testing modules in rspec

下一篇: How do you run a single test/spec file in RSpec?