Tag: unit testing

Rails 3测试夹具与carrierwave?

我正在努力从attachment_fu升级到carrierwave,因为attachment_fu在rails 3中被破坏了。 没有一个测试能够运行,因为我们有无效的灯具使用attachment_fu的语法来附件文件。 例如,我们有一个Post模型,它有一个PostAttachment。 以下是PostAttachment夹具中的数据: a_image: post_id: 1 attachment_file: /test/files/test.png 这是我得到的错误: ActiveRecord::StatementInvalid: PGError: ERROR: column “attachment_file” of relation “post_attachments” does not exist LINE 1: INSERT INTO “post_attachments” (“post_id”, “attachment_file”… attachment_file将拾取attachment_file,它将处理为模型创建attachment_fu附件的所有处理。 有没有办法在灯具中有图像附件,但是使用CarrierWave代替?

Rails命令有什么区别: – no-test-framework, – skip-test-unit和-T?

我的印象是所有这三个都是相同的,但现在我调查它,似乎它们都是不同的。 我是一个Rails新手,我试图自己解决这个问题,但我不能通过搜索得到任何好的文档。

Rails – 使用开发数据填充测试数据库

有没有什么简单的方法可以将developmenet数据库中的数据复制到测试数据库中? 我知道这是一种复制模式和重新创建数据库的方法,但有没有任何rake任务用开发一个填充测试数据库?

如何将Rails助手导入function测试

嗨,我最近inheritance了一个项目,其中前开发人员不熟悉rails,并决定在视图助手中加入许多重要的逻辑。 class ApplicationController < ActionController::Base protect_from_forgery include SessionsHelper include BannersHelper include UsersHelper include EventsHelper end 特别是会话管理。 这是可以的,并与应用程序一起工作,但我在为此编写测试时遇到问题。 一个具体的例子。 某些操作执行before_filter以查看current_user是否为admin。 这个current_user通常由我们所有控制器共享的sessions_helper方法设置所以为了正确测试我们的控制器,我需要能够使用这个current_user方法 我试过这个: require ‘test_helper’ require File.expand_path(‘../../../app/helpers/sessions_helper.rb’, __FILE__) class AppsControllerTest @app.attributes end end require语句发现session_helper.rb没问题,但没有Rails魔法,它在AppsControllerTest无法以相同的方式AppsControllerTest 我怎么能欺骗这个疯狂的设置进行测试?

应该匹配的ActiveRecord匹配器是否违反了“测试行为不实施”规则?

例如,如果我在我的规范中使用should validate_presence_of ,那只是测试我在模型中有validate_presence_of代码片段,那就是测试实现。 更重要的是,测试真正的问题并不是那个规范完全没用,“如果我没有填写某个字段,那么模型是否会成功保存?”

测试的未定义方法`users’

我正在尝试编写一个简单的测试,但是当我在Test函数中使用它时,我的应用程序没有检测到’users’关键字: post_controller_test.rb : require ‘test_helper’ class PostsControllerTest ‘my_id’},{‘access_token’=>Rails.application.secrets.fb_access_token}) assert_response :success end end test_helper.rb : ENV[‘RAILS_ENV’] ||= ‘test’ require File.expand_path(‘../../config/environment’, __FILE__) require ‘rails/test_help’ class ActiveSupport::TestCase include Devise::TestHelpers # Add more helper methods to be used by all tests here… end users.yml : # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: email: hello@testing.com encrypted_password: links: causes: two: email: […]

Rails奇怪错误=> IndexError:字符串不匹配

我有一个非常奇怪的消息错误。 我认为它不是来自Ruby,而是来自unix系统。 所以,我有以下测试文件: require File.dirname(__FILE__) + ‘/../test_helper’ class CatTest < ActiveSupport::TestCase def test_truth assert true end end 因此,没有来自Fixtures目录中的YAML文件。 当我使用以下命令运行上面的测试时: $ ruby ./test/unit/cat_test.rb 我得到了非常奇怪的结果: Loaded suite ./test/unit/cat_test Started E Finished in 0.011252 seconds. 1) Error: test_truth(CatTest): IndexError: string not matched 1 tests, 0 assertions, 0 failures, 1 errors 我找不到错误的含义 IndexError: string not matched 但最奇怪的是昨天,它奏效了! 非常感谢您的帮助。 问候 […]

Rails灯具 – 你如何设置外键?

我正在阅读本指南中关于Rails装置的内容(谢谢,trevorturk)。 看来你在Yaml文件中定义了类,它们会自动加载到test数据库中 – 很酷。 但是如果你想指定这个食谱属于那个食谱(或其他什么),你怎么做? 您是否应该在Yaml代码中手动指定cookbook.id和recipe.cookbook_id的值? (只是一个猜测 – 指南没有显示那样的东西。)或者是否有更合适的方式?

Rails 4控制器测试“未定义的方法许可”

我有一个基于Rails 4文档的简单控制器测试(使用Test :: Unit): test “should create user” do assert_difference(‘User.count’) do post :create, user: users(:sample_user) end assert_redirected_to user_path(assigns(:user)) end 而且,尽管实际用户被创建得很好,但测试失败了,他说: 1)错误:UsersControllerTest #test_should_create_user:NoMethodError:undefined method permit’ for “832959492”:String app/controllers/users_controller.rb:23:in users_controller.rb permit’ for “832959492”:String app/controllers/users_controller.rb:23:in user_params’app / controllers / users_controller.rb:8:in create’test create’ test/controllers/users_controller_test.rb:11:in ‘test / controllers / users_controller_test.rb create’ test/controllers/users_controller_test.rb:11:in块(2级)中:10:在`block in’中 由于某种原因,测试无法识别新的Rails 4 permit方法。 现在,我将user_params作为控制器中的私有方法。 但是,我尝试将其移动到实际的create操作并收到相同的错误。 用户创建也是100%标准(根本不像Rails文档那样疯狂)。 有谁知道如何重写或以其他方式使这个测试通过?

如何在不丢弃DB内容的情况下运行Rails集成测试?

在推送到生产之前,我已经编写了一些集成测试,我想在我的prod数据库副本上运行。 这让我测试我的所有路线仍然是正确的,所有页面都呈现没有错误,一些多页工作流程按预期工作。 当我运行集成测试时,它会丢弃我加载的数据库并加载测试夹具(如预期的那样)。 如何更改此行为并保留我的生产数据库的副本?