我有一个小型rails应用程序,我最初使用的是sqlite3,然后决定切换到mysql。在我切换之后,我的一个rspec测试破了,但是我不知道为什么(使用sqlite3时工作正常,并且通过实际页面检查功能似乎正常工作)。
我的测试如下:
before(:each) do
@a = FactoryGirl.create(:a)
@b = FactoryGirl.create(:b)
@relationship = @a.connector.build( :b_id => @b)
@relationship.save
end
测试1:
it "should have the right b" do
@relationship.b.should == @b
end
测试2:
it "should have the right a" do
@relationship.a.should == @a
end
在我的测试中,测试1失败,而测试2在使用mysql时成功通过(使用sqlite3时都是路径)。 据我所知,如果我只是在切换数据库,我不应该要求对测试本身进行任何更改,那么有人能说出我做错了什么吗?或者,如果我需要添加一些内容来刷新数据库?
相关说明,在rspec测试中调试问题的推荐方法是什么,特别是如果实际开发有效,但测试失败了? (我使用的是Rails 3.1和rspec-rails 2.10.1)。
提前感谢任何输入,
此致
答案 0 :(得分:0)
我最近遇到过这个问题;问题是由我的模型中的错误缓存行为引起的。
在第一个规范中,我正在缓存第一个使用ID 1创建的对象。当为第二个规范重新创建时,该对象在SQLite3上使用ID 1创建,在MySQL上使用ID 2创建。
因此,在SQLite3上测试时,缓存行为是运气好的,并且在MySQL上一直失败。