我有一个模块
module Foo
def normalize name
# modify and return
end
end
我可以将它混合到一个模型中......
class Something
include Foo
end
Something.new.normalize "a string" # works
尝试混合到控制器......
class SomeController < ApplicationController
include Foo
def some_action
normalize "a string"
end
end
SomeController#some_action#在功能测试中工作,但不在rails服务器中工作!
我尝试了各种形式的模块,扩展了ActiveSupport :: Concern,添加了一个包含的块并将normalize更改为类方法,但我得到了相同的结果。为什么这会在功能测试中起作用,但不在其外部?
我感觉我只是错过了一些简单的事情。
答案 0 :(得分:3)
它&#34;工作的原因&#34;在测试中,测试还包括模块并调用normalize方法:
class SomeControllerTest < ActionController::TestCase
include Foo
使控制器可以使用它...不知何故。
删除include Foo也使测试失败。
为了让控制器工作,我改变了
normalize "a string"
到
self.normalize "a string"