我仍然使用旧的RSpec 2语法,如下所示:
page.should have_text('foo')
而不是
expect(page).to have_text('foo')
如果说should
语法变得完全不受支持,有没有办法建立某种别名,这样我仍然可以使用旧语法?基本上把page.should
映射到expect(page).to
,把page.should_not
映射到expect(page).not_to
?
我认为我只是在语法的可读性/干净性方面对旧语法有很强的亲和力。谢谢
您可能需要用这种方法对一些东西进行猴子补丁,这种方法看起来非常简单:https://github.com/rspec/rspec-expectations/blob/dba67987c63f551d1bf0f7877f069fa8b72d0461/lib/rspec/expectations/syntax.rb#L43:L45
def should(matcher=nil, message=nil, &block)
::RSpec::Expectations::Syntax.warn_about_should_unless_configured(::Kernel.__method__)
::RSpec::Expectations::PositiveExpectationHandler.handle_matcher(self, matcher, message, &block)
end
但到底是哪个物体和猴子补丁有关?很难说,因为page
有这个方法,current_scope
也有,前者是Capybara::Session
类的对象,后者是Capybara::Node::Document
。还有哪些可能的对象从该模块中获得此should
方法?
所以,要想正确地完成这项工作,你需要对Rspec和Capybara内部有很好的了解。当你理解它时,你需要了解这个项目的任何未来发展,这些发展可能会影响这个功能(你现在负责维护(。如果这是一个商业项目,开发人员可能会觉得很尴尬,并倾向于使用官方语法。
因此,它不仅仅是一个可以永远使用的简单别名,它还是一个需要维护的功能。我并不是说这不值得,但你需要自己回答这个问题:是吗?