Tag: 测试

Rails如何在Seeds.rb中使用FactoryGirl?

我想让Seeds.rb文件在Rails.root.join(‘spec’)目录的文件中运行一个方法,该目录将用FactoryGirl生成的数据填充数据库。 让我们用“seed_data”方法调用这个文件“helpers.rb” 编辑: require Rails.root.join(‘spec’,’helpers.rb’)链接文件。 资源 这个方法我想在before(:all) do seed_data end种子测试数据库和rake db:seed for development / production数据库具有相同的效果。

个别规格在单独运行时通过,但在运行所有规格时失败

我的foo_controller_spec.rb中有30个规格,当我使用spec运行整个文件时,我得到4个失败,2个待定。 当我单独运行4个失败的规格时,其中3个仍然失败,但其中一个通过。 起初我认为这是一个数据库问题,在运行之间没有正确清理数据。 所以我安装了database_cleaner( http://github.com/bmabey/database_cleaner )并将此代码添加到我的spec_helper: config.before(:suite) do DatabaseCleaner.strategy = :truncation DatabaseCleaner.clean_with(:truncation) end config.before(:each) do DatabaseCleaner.start Sham.reset login end config.after(:each) do DatabaseCleaner.clean end 现在,当我运行我的规格时,我可以看到每个规格之间的表被截断,所以我知道它正在工作,但是当运行所有其他规格时规范仍然失败但是当单独运行时传递。 我在这里想念的是什么?

轨道unit testing是否应该打到数据库?

我一直在为我的rails应用程序编写测试。 我使用TestUnit进行unit testing和function测试。 我也使用黄瓜进行GUI测试。 但我发现http://www.dcmanges.com/blog/rails-unit-record-test-without-the-database说unit testing最好不要打到数据库。 我同意击中数据库需要相当长的时间。 我已经使用spork来减少环境负荷。 在测试rails应用程序时,最佳做法是什么?

何时选择系统测试而不是集成测试Rails 5.1?

随着Rails 5.1的发布,它们包括了系统测试。 这意味着我们也可以在Rails中测试我们的JavaScript。 我看到Rails指南解释了以两种方式创建文章的示例测试:通过系统测试和集成测试。 现在问题是:在Rails 5.1之前,我在集成测试中编写了复杂的测试用例。 但现在我有两个选项来编写测试用例。 我可以写测试用例 test: should create article 在集成测试中,我也可以在系统测试中编写相同的测试用例。 那么我何时应该选择系统测试来编写测试用例以及何时选择集成测试?

Rails:如何提高I18n转换是在测试环境中缺少exception

我希望Rails在测试环境中缺少I18n转换时引发exception(而不是渲染文本’translation missing’)。 有没有一种简单的方法来实现这一目标?

仅生成现有模型/控制器的测试

我有一个基于别人工作的Rails3应用程序。 出于某种原因,他们决定不提供应用程序的测试,我觉得令人沮丧。 我希望能够做的是为所有现有的控制器和模型构建测试,这样我就可以在test :: unit中自己创建测试。 我不想重新创建模型或控制器,只需创建测试。 我是Rails的新手,并且已经找到了可能会这样做的rake命令,但到目前为止一切都没有运气。 任何建议/方向最受赞赏。

检查RSpec中的ActiveRecord关联

我正在学习如何使用Rspec编写测试用例。 我有一个简单的post评论脚手架,其中一个post可以有很多评论。 我正在使用Rspec进行测试。 我应该如何检查Post :has_many :comments 。 我应该将Post.comments方法存根,然后通过返回注释对象数组的模拟对象来检查它吗? 真的需要测试AR协会吗?

rspec,未知属性问题

我正在通过(优秀)railstutorial.org网站上有一个关于rspec的基本问题。 当我在新用户模型上运行以下测试时,我收到“未知属性:用户名”消息和失败的测试。 before(:each) do @attr = { :lname_e => “User”, :fname_e => “Test”, :email => “user@example.com”, :username => “testUser” } end it “should create a new instance given valid attributes” do User.create!(@attr) end 错误语法是 Failures: 1) User should create a new instance given valid attributes Failure/Error: User.create!(@attr) unknown attribute: username # ./spec/models/user_spec.rb:11:in `block (2 levels) […]

Capybara,在css元素中找到

我正在使用Ruby on Rails 3,Cucumber和Capybara 我已经搜索了相当长的一段时间,我无法弄清楚如何在css标签中找到特定的页面元素。 在我的例子中,我需要确保在表格中找到名称,而不是在“欢迎[名称]”中。 我试过类似的东西: within(‘table’) do page.body.index(“[Name]”) end 我有一个id=’table’ 。 但我想知道如何为任何css元素执行此操作,例如: within(‘h2’) do page.body.should have_content (‘stuff’) end 我认为我的问题与page.body有关,但我不确定如何将其包含在特定的css标签中。 提前致谢!

FactoryGirl:填充有很多关系保存构建策略

我的问题似乎很常见,但我在文档或互联网本身没有找到任何答案。 它似乎是这个问题的一个克隆has_many同时尊重factory_girl中的构建策略,但是在post-factory_girl改变了很多之后的2。5年。 我有一个名为照片的has_many关系的模型。 我想填充这个有很多关系,保留我选择的构建策略。 如果我打电话offering = FactoryGirl.build_stubbed :offering, :stay我希望offering.photos是一个存根模型的集合。 我发现实现这一目标的唯一方法是: factory :offering do association :partner, factory: :named_partner association :destination, factory: :geolocated_destination trait :stay do title “Hotel Gran Vía” description “Great hotel in a great zone with great views” offering_type ‘stay’ price 65 rooms 70 stars 4 event_spaces 3 photos do case @build_strategy when FactoryGirl::Strategy::Create then […]