如何使用rspec测试控制器方法?

Ran*_*ake 20 testing methods controller rspec ruby-on-rails

我正在努力学习rspec.我似乎无法测试rails控制器方法.当我在测试中调用该方法时,rspec只返回一个未定义的方法错误.这是我的测试示例

it 'should return 99 if large' do
  GamesController.testme(1000).should == 99
end
Run Code Online (Sandbox Code Playgroud)

这是错误:

 Failure/Error: GamesController.testme(1000).should == 99
 NoMethodError:
   undefined method `testme' for GamesController:Class
Run Code Online (Sandbox Code Playgroud)

我在GamesController中有一个testme方法.我不明白为什么测试代码看不到我的方法.

任何帮助表示赞赏.

Iaz*_*zel 32

我认为正确的方法是:

describe GamesController do
  it 'should return 99 if large' do
    controller.testme(1000).should == 99
  end
end
Run Code Online (Sandbox Code Playgroud)

在rails控制器规范中,当您将控制器类放入时describe,您可以使用controller方法来获取实例:P
显然,如果testme方法是私有的,您仍然必须使用controller.send :testme


Mik*_*iet 7

您尝试测试类方法,但控制器具有实例方法

你需要 GamesController.new.testme(1000).should == 99

甚至GamesController.new.send(:testme, 1000).should == 99,因为我认为这不是操作方法,而是私有或受保护的方法。

操作方法是测试这种方法