繁体   English   中英

使用rspec-rails运行数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM