0

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

现在我的测试类@testJson 中有var,但是这些JSONS 有时会发生一些意想不到的事情(ie 中的坏字符)。所以我想添加另一个测试用例。

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

保持这样的“固定装置”的最佳方法是什么?我应该将它们保存在文件中并加载它们吗?是否有一些我不知道的夹具功能可以提供帮助?

4

1 回答 1

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
于 2012-11-01T08:12:18.387 回答