是否有别名可用于代替 RSpec 和 Capybara 中的"expect(page).to"?



我仍然使用旧的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内部有很好的了解。当你理解它时,你需要了解这个项目的任何未来发展,这些发展可能会影响这个功能(你现在负责维护(。如果这是一个商业项目,开发人员可能会觉得很尴尬,并倾向于使用官方语法。

因此,它不仅仅是一个可以永远使用的简单别名,它还是一个需要维护的功能。我并不是说这不值得,但你需要自己回答这个问题:是吗?

相关内容

  • 没有找到相关文章

最新更新