ruby-on-rails – Ruby on Rails – 测试数据库

ruby-on-rails – Ruby on Rails – 测试数据库,第1张

概述有没有办法阻止Rails在运行测试之前清除测试数据库?我想使用生产数据库的副本进行测试,因此我需要防止rails每次都清除数据. 有相当多的数据,所以我想尽可能避免使用灯具,因为我假设每次都需要很长时间来填充数据库. 谢谢, 麦克风 您可以通过手动运行测试来避免它 ruby -Itest test/unit/some_test.rb 执行测试数据库重新创建的rake任务(您可以像这样手动运行) r 有没有办法阻止Rails在运行测试之前清除测试数据库?我想使用生产数据库的副本进行测试,因此我需要防止rails每次都清除数据.

有相当多的数据,所以我想尽可能避免使用灯具,因为我假设每次都需要很长时间来填充数据库.

谢谢,
麦克风

解决方法 您可以通过手动运行测试来避免它

ruby -Itest test/unit/some_test.rb

执行测试数据库重新创建的rake任务(您可以像这样手动运行)

rake db:test:prepare

但我的建议是,你做错了.
测试中的一般想法是,您知道数据库的状态,因此知道对函数的期望.

例如.

test "search_by_name" do  expected = User.all.select{|u| u.name =~ /arthur/i}  assert_equal expected,User.search_by_name("Arthur")end

是一个很好的测试
但是,如果你不知道数据库的状态,你怎么知道有一个亚瑟?

上述测试将通过三个不良案例;

>没有用户记录
>所有用户都被称为“亚瑟”
>没有用户称为arther.

因此创造虚假现实更好
我们知道数据库的状态.

我们想要;

>至少有一个名为“Arthur”的用户
>至少有一个名为“Arthur”的用户作为另一个单词的一部分
>至少一个非亚瑟用户.

一个更好的测试,假设db是空的,并且使用工厂女孩,可能是.

test "search_by_name" do  expected = [    Factory.create(:user,:name => "Arthur"),Factory.create(:user,:name => "MacArthur")  ]  not_expected = [Factory.create(:user,:name => "Archer")]  assert_equal expected,User.search_by_name("Arthur")end
总结

以上是内存溢出为你收集整理的ruby-on-rails – Ruby on Rails – 测试数据库全部内容,希望文章能够帮你解决ruby-on-rails – Ruby on Rails – 测试数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1289101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存