如何为不在DB中的测试固定数据

时间:2012-10-31 23:25:04

标签: ruby-on-rails

假设我想测试我的控制器行为,但它通过GET接受JSON字符串。

现在我的测试类@testJson中有var,但是有时会出现一些意想不到的东西发生在那些JSONS(内部的坏char)中。所以我想添加另一个测试用例。

但是添加另一个var @ problematicJson1(可能更多)并不是一个好主意。

保持“固定装置”的最佳方式是什么?我应该保存文件并加载它们吗?是否有一些我不知道的夹具功能可能会有所帮助?

1 个答案:

答案 0 :(得分:1)

那些东西不是固定装置。

你应该使用RSpec的一个简洁特性(如果你正在使用RSpec)允许懒惰地定义变量,所以实际变量只有在被特定的“它”使用时才被实例化,即使它是在一个特定的“它”中定义的外部“上下文/描述”块。

https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/helper-methods/let-and-let

context "some context" do
  let(:testJson) { put your json inside the block }
  let(:otherJson) { {:my_json => textJson} } # this will use the defined testJson

  it "something" do
    testJson.should have_key "blah"
  end

  context "some internal context"
    let(:testJson) { something else }

    it "some other test" do
      otherJson[:my_json].should .... 
      # this will use the local version of testJson
      # you only have to redefine the things you need to, unlike a before block
    end
  end
end