我在为我的 rails 应用程序创建 rspec 测试时遇到了一些问题。
假设我有一个名为 MyModel 的模型,它具有以下函数,它获取所有具有空文本的 MyModel 的实例
self.searchEmtpy:
self.where(:text => nil)
end
我已经定义了以下测试,它检查具有空文本的新 MyModels 是否应该由前一个函数返回。我使用 FactoryGirl 进行模型创建。
describe "get empty models" do
before do
@previousModels=MyModel.searchEmtpy
@newModel=Factory(:myModel, :text => nil)
end
it "new empty models should appear" do
currentModels=MyModel.searchEmtpy
(previousModels << @newModel).should eq(currentModels)
end
end
测试很简单,但它不起作用。我不知道为什么,但是,根据我从输出中了解到的情况,在“应该”行上,previousModels 已经包含 newModel,因此测试失败(它包含 @newModel 2 次。我我遗漏了一些明显的东西?“它”里面的指令不是按顺序调用的吗?
为了澄清,以下测试不会失败,它应该:
describe "get empty models" do
before do
@previousModels=MyModel.searchEmtpy
@newModel=Factory(:myModel, :text => nil)
end
it "new empty models should appear" do
currentModels=MyModel.searchEmtpy
(previousModels).should eq(currentModels)
end
end