假设我想测试我的控制器行为,但它通过GET接受JSON字符串。
现在我的测试类@testJson中有var,但是有时会出现一些意想不到的东西发生在那些JSONS(内部的坏char)中。所以我想添加另一个测试用例。
但是添加另一个var @ problematicJson1(可能更多)并不是一个好主意。
保持“固定装置”的最佳方式是什么?我应该保存文件并加载它们吗?是否有一些我不知道的夹具功能可能会有所帮助?
答案 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