Tag: unit testing

添加索引到电子邮件列的罪魁祸首unit testing失败

我是设计和导轨的新手,我只是将设计与我的示例应用程序集成在一起。 我注意到在创建用户模型后,我的所有unit testing都失败了。 我试着缩小它,发现即使为user_test.rb生成的断言“真相”也失败了: ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: \ column email is not unique: INSERT INTO “users” (… 一旦我注释掉add_index … # add_index :users, :email, :unique => true …并重新运行rake db:test:load使用ruby -I test test/unit/user_test.rb rake db:test:load并重新运行测试。 有没有人经历过这个?

在rails测试中跟踪弃用警告的来源

在运行我的function测试时,我在其中一个测试用例中收到以下警告,但我无法确定它来自何处: gems/actionpack-2.3.8/lib/action_controller/record_identifier.rb:76: warning: Object#id will be deprecated; use Object#object_id 不幸的是,这是显示的回溯的唯一一行,即使我使用rake test –trace运行它,并且log/test.log没有更多信息。 如何获取此警告的完整回溯或以其他方式确定我的代码中的哪一行导致它?

ActiveRecord Rollback在Rails测试中不起作用

抛出ActiveRecord :: Rollback可以正常工作,但不能在测试中使用。 我以前遇到过这个问题,我现在又有了这个问题,并且由于某种原因找不到其他人有这个问题的记录。 我这是因为每次测试运行时测试都会执行回滚,并且大多数数据库不支持嵌套的反向返回。 但是,我不能成为唯一一个涉及事务回滚的测试用例的人,所以也许我做错了。 以下测试用例失败(使用shoulda库,尽管相同的测试失败,基本的Test :: Unit): require ‘test_helper’ class RollbackTest < ActiveSupport::TestCase context "create a record and throw rollback" do setup do User.transaction do User.create! raise ActiveRecord::Rollback end end should_not_change("count of users") { User.count } end end 但是在控制台上: ?> User.transaction do ?> User.create! >> raise ActiveRecord::Rollback >> end => nil >> User.count […]

测试时按特定顺序装载导轨夹具

有没有办法在运行测试时按特定顺序加载Rails灯具? 例如,参加以下课程…… class User < ActiveRecord::Base has_many :memberships has_many :groups, through: :memberships end class Group < ActiveRecord::Base has_many :memberships has_many :users, through: :memberships end class Membership < ActiveRecord::Base belongs_to :user belongs_to :group end Memberships具有数据库级外键约束,要求Users和Groups在创建之前存在。 但是,由于Rails按字母顺序加载fixture,因此Memberships在Users之前加载Memberships ,并且会发生错误,指出关系不存在(正确地说是这样)。 ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: insert or update on table “memberships” violates foreign key constraint 有没有办法在运行测试时加载Memberships之前加载Users和Groups夹具?

Railsunit testing不会加载灯具

rake test:units在我当前的应用程序中失败,因为缺少了所需的灯具数据。 如果我通过rake db:fixtures:load RAILS_ENV=test fixtures手动加载rake db:fixtures:load RAILS_ENV=testunit testing正在运行,但是rake清除了测试数据库。 我的test_helper包含fixtures :all和我的测试都是从它inheritance的 – 但是灯具根本就没有加载。 我现在有点无能为力,真的需要一些帮助! 我已经尝试了很多,我认为它与这个项目中使用的一些环境设置或插件有关。 有谁知道在哪里阅读有关为测试环境加载哪些文件?

在Rails中禁用unit testing生成器

有谁知道如何禁用Rails中的自动unit testing文件生成? 无论何时创建控制器,模型或迁移,它都会在test /目录中创建关联文件; 我需要这个禁用。 此外,是否可以使RPsec接管,以便在执行标准rails g model | controller | migration命令时使用RSpec(在spec /目录中)创建文件?

Rails:validation包含布尔失败测试

我试图确保我的模型的一个字段是一个布尔值,但我的测试继续失败。 阅读本文后: validationRspec和Rails中的布尔值以及此Rails:如何validation某些内容是否为布尔值? 我最终这样做: class Model { :in => [true, false] } end 我尝试过几种不同的测试方式(使用rspec和shoulda匹配器),而且由于我的测试一直在失败,我现在正在采用最愚蠢的方式(?)。 仍然,测试没有通过,我猜测有一些机制可以在某处转换价值。 以下是我用来了解发生了什么的事情: # create instance without setting value … # these work as expected model_instance.valid?.should be_false # passes model_instance.my_field = true model_instance.valid?.should be_true # passes model_instance.my_field = false model_instance.valid?.should be_true # passes # works as expected model_instance.my_field = “” model_instance.valid?.should be_false […]

Ruby Unit :: Test通过忽略空格来比较html输出

我使用Ruby的Test :: unit来比较生成的html的结果和预期的结果。 (不使用铁轨)。 我并不关心空白差异,但这些差异几乎总是在测试期间出现。 是否有任何测试机制来比较html而忽略无意义的空白。 我可以在这里看到python有类似的问题。 我在寻找Ruby的答案。

使用mocha存根实例变量

假设我有一个直接引用实例变量的方法: class MyClass def method1 puts @instance_var end end 如何在Test::Unit测试中使用mocha来@instance_var的值?

如何打破RSpec超长规格?

有没有一种方法可以将模型的规格分解为某种层次结构? 我们的几个型号的规格已超过5000线,这降低了它们的可维护性。 我知道在一个理想的世界中,模型不够复杂,不需要这么大的测试,但这些模型实际上是来自Python科学库(系列和数据框架)的pandas对象的Ruby实现,所以我们不幸受此限制。 我希望能够通过逻辑运算来分割测试。 这可能吗? 理想情况下,我还希望使用单个命令运行模型的所有规范。