[英]run database with rspec-rails
我正在尝试使用RSpec测试控制器,但出现问题,因为控制器中的功能需要数据库。
控制器中的代码行如下所示:
@myallresources = Myrsources.all
Myresources只是从ActiveRecord :: Base继承而来
但是,由于没有数据库,因此没有要加载的内容,并且@myallresources只是一个空数组,从而导致测试失败。 运行rspec时是否可以连接到数据库?
我对RSpec和rails非常陌生,因此对您的帮助非常感谢。 谢谢。
您不应该在控制器规格中使用数据库连接。
检查此页面上有关数据库隔离的部分http://rspec.info/rails/writing/controllers.html
基本上,您必须模拟或存根ActiveRecord模型,因为应该在模型规格中单独测试它们。 这是一个使用模拟模型的简单示例:
before do
mocks = (1..3).map { mock_model(MyResource) }
MyResource.should_receive(:all).and_return(mocks)
end
将其放在使用MyResource.all
的操作的describe
定义测试所在的同一块中。
您可以在以下链接中找到有关模拟和存根的良好解释:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.