我正在编写一个生成器,我需要模拟一个Rails.application对象并取回Rails.application.class.parent作为Rails应用程序的名称。
def test_model_with_application_namespace
name = "Dummyapp"
application = Rails.stubs(:application).class.parent.returns(name)
run_generator ["file", "--namespaced"]
assert_file "app/models/myapp/file.rb", /class Dummyapp::File < ActiveRecord::Base/
end
这就是我到目前为止的测试。
您需要Rails.application.class
回复的对象是响应parent
并返回name
的模拟。现在,您只需存根应用程序。您需要模拟父级、类和应用程序。可能有一种更干净的方法,但我认为这将做你想要的:
application = Rails.stubs(:application).returns(mock(:class => mock(:parent => name)))