我正在尝试 Apotonick 的 Trailblazer gem,它在 Rails 之上带来了更多的结构,我真的很喜欢我迄今为止尝试过的东西,虽然还没有完全接受它。这是 Trailblazer 的一大优势,您可以逐步深入了解它,逐步将其引入您的 Rails 项目。我买了 Trailblazer 的书,我现在正在关注这本书,这引出了我的问题。
我正在开发示例应用程序(@see https://github.com/apotonick/gemgem-trbrb),但我使用的是 rspec。
我想单独测试细胞输出。在本书中,测试框架是 Test::Unit 并且一些辅助方法附带了用于 Test::Unit 的单元格。
使用 rspec 这是另一个故事......我尝试了 rspec-cells 但它似乎不适用于 Trailblazer 中使用的当前单元版本(4.0)。因此,我尝试进行一些鲑鱼编码,目标是尽可能使用最小的设置来检索单元格的输出。这导致了一个带有简单助手的模块
这是代码(也在这里:https ://github.com/demental/gemgem-trbrb/blob/3ec9df1d5f45b880f834486da3c150d4b65ec627/spec/support/cells.rb )
module Cell
module Rspec
private
def concept(name, *args)
controller_stub = double(
url_options: {
host: '',
optional_port: 80,
protocol: 'http',
path_parameters: ''
}
)
Capybara.string(Cell::Concept.cell name, controller_stub, *args)
end
end
end
RSpec.configure do |config|
config.include Cell::Rspec, type: :cell
end
我需要制作存根 url_options 方法的原因是 pathHelpers 方法可以在单元格视图中工作,而无需设置完整的控制器(带有完整的请求对象)。
我喜欢它的一种方式,它使设置非常简约。但我想知道它是不是太假了,因为我只是模仿一个控制器,但我觉得我没有摆脱它的依赖。你怎么看 ?