Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用designe进行钢轨功能试验_Ruby On Rails_Testing_Functional Testing_Devise - Fatal编程技术网

Ruby on rails 用designe进行钢轨功能试验

Ruby on rails 用designe进行钢轨功能试验,ruby-on-rails,testing,functional-testing,devise,Ruby On Rails,Testing,Functional Testing,Devise,经过3年的拖延,今天是我开始测试Rails应用程序的日子。我的第一步是修复Rails 3 beta4应用程序中失败的测试 我最后3次失败的测试与Desive gem及其用户有关!方法,该方法位于控制器顶部的before_过滤器中 你会帮我解决这个问题,从而获得巨大的业力,因为从现在起,这将使我能够使用TDD方法 下面是困扰我的错误: 1) Error: test_should_get_accepted(ModerationControllerTest): NoMethodError: undef

经过3年的拖延,今天是我开始测试Rails应用程序的日子。我的第一步是修复Rails 3 beta4应用程序中失败的测试

我最后3次失败的测试与Desive gem及其用户有关!方法,该方法位于控制器顶部的before_过滤器中

你会帮我解决这个问题,从而获得巨大的业力,因为从现在起,这将使我能够使用TDD方法

下面是困扰我的错误:

1) Error:
test_should_get_accepted(ModerationControllerTest):
NoMethodError: undefined method `authenticate!' for nil:NilClass
    /test/functional/moderation_controller_test.rb:10:in `test_should_get_accepted'
Desive在本页中只提供了功能测试指针和帮助:但我不知道如何将其应用到应用程序中


你能给这个测试noob一些关于如何使用这些助手的详细说明吗?

我花了一些时间,但我找到了方法。这是为那些在同一点上遇到困难的人准备的:

在moderation_controller_test.rb顶部的类声明下方,添加以下行:

include Devise::TestHelpers
我在我的用户装置中有2条记录,我在每个测试中添加了这一行,其中用户必须被授权执行操作

sign_in User.first

当然,一旦你知道怎么做,它就非常简单了。

我对Rails比较陌生,所以我想添加一些对其他新手来说可能不明显的东西

关于用户装置,我必须定义一个装置,但将其保留为空,以使其工作:

# in users.yml    
joe: {}
在帮助程序中使用designe
sign_时,您可以在测试中直接访问哈希对象:

# a test method in some_controller_test.rb
sign_in users(:joe)

有关Rails装置的更多信息,请参阅。

如果您希望Desive test helper可用于所有测试,则必须将allesklar在
test\u helper.rb
底部提到的include包含在类声明中,如下所示:

class ActionController::TestCase
  include Devise::TestHelpers
end
更新:2017年1月25日

。。。rails 5发布了一个弃用警告并要求您使用

designe::Test::ControllerHelpers

除了test\u helpers.rb中的代码之外,我在controller\u测试的顶部添加了这个代码,它对我很有用:

require 'test_helper'
逐字引用:

如果您使用的是RSpec,则可以将以下内容放入名为
spec/support/designe.rb的文件中:

RSpec.configure do | config |

config.include designe::TestHelpers,:type=>:controller

end


现在,您可以在RSpec测试中使用
登录
注销

在test\u helper.rb文件中包含designe::TestHelpers会产生其他错误。根据这个答案,它应该只包含在单独的测试文件中:所以我编辑了你的答案问题不在于把它放在test_helper.rb本身。问题是如果它的作用域不正确-它必须在ActionController::TestCase类中。如果它包含在test_helper.rb的ActiveSupport::TestCase块中,事情就会变得糟糕。