Ruby on rails 如何测试扩展控制器的模块?

Ruby on rails 如何测试扩展控制器的模块?,ruby-on-rails,rspec,Ruby On Rails,Rspec,我想创建一个模块,因为我需要在应用程序的每个控制器操作上执行一些方法。因此,我创建了一个模块,并对我的应用程序控制器使用了一个before_过滤器,这样它就可以为每个操作运行 此模块类似于控制器扩展,因为它处理重定向,并具有一些方法。我需要有一个登录用户来检查,但由于某些原因,我为其他控制器设置的宏无法识别: require 'spec_helper' require 'devise/test_helpers' describe GameEngine::GameLoop do logi

我想创建一个模块,因为我需要在应用程序的每个控制器操作上执行一些方法。因此,我创建了一个模块,并对我的应用程序控制器使用了一个before_过滤器,这样它就可以为每个操作运行

此模块类似于控制器扩展,因为它处理重定向,并具有一些方法。我需要有一个登录用户来检查,但由于某些原因,我为其他控制器设置的宏无法识别:

require 'spec_helper'
require 'devise/test_helpers'

describe GameEngine::GameLoop do
    login_user

    it "should check tavern quest" do
        ...
    end

end

我发现登录用户是未定义的,尽管它适用于我需要它的所有控制器。为什么不能在模块上识别它?

如果这是rspec,您可能需要定义一个扩展rspec的模块,而不是您的控制器。我不确定我是否理解这一点。您能举个例子吗?据我所知,login_user方法是在测试的上下文中调用的,而不是在活动控制器实例的上下文中调用的。您可能应该用所使用的测试框架来标记这个问题。我不认为这是正在发生的事情,因为我没有定义login\u用户。由于某种原因,宏似乎没有被读取。您正在测试的上下文中调用login\u user,这就是方法的预期位置,但据我所知,它是在控制器中定义的。像Desive这样的大多数框架将创建一种特殊的测试方法,该方法与Test::Unit或其他工具挂钩。如果您想知道定义了哪些方法,请检查puts self.methods-Object.new.methods.sort.inspect的输出,以查看可用于该上下文的方法。