Ich versuche ein paar let
's und before
Hooks zu definieren, die global für alle meine Spezifikationen ausgeführt werden, indem Sie sie in eine separate Datei mit der Rspec configuration block aufnehmen.rspec shared_context und include_context für alle Spezifikationen
habe ich versucht, so etwas wie:
module Helpers
def self.included(base)
base.let(:x){ "x" }
base.before(:all){ puts "x: #{x}" }
end
end
Rspec.configure{|c| c.include Helpers }
aber nicht wie erwartet funktionieren. Die before(:all)
läuft nicht nur vor jeder Hauptbeispielgruppe, sondern auch jede verschachtelte.
Dann fand ich über shared_context aus und es scheint genau das zu sein, was ich will.
Mein offenes Problem ist jedoch, dass ich nicht herausfinden kann, wie ich einen Kontext unter ALL meiner Spezifikationen teilen. Die Dokumentation bezieht sich nur auf include_context
innerhalb einer bestimmten Spezifikation.
Kann mir jemand sagen, wie ich dieses Verhalten in einer globalen Weise erreichen kann? Ich bin mir bewusst, dass ich vor dem Haken in meinem spec_helper
global definieren kann, aber ich kann nicht verwenden let
scheinen. Ich möchte einen einzigen Ort, an dem ich diese beiden Dinge definieren kann und meinen Spezifikationshelfer nicht verschmutze, sondern ihn einfach mit einschließen.
Nach RSpec Tests 'vor (: all)' must [laufen nur einmal] (https://www.relishapp.com/rspec/rspec-core/v/2-8/docs/hooks/before- and-after-hooks # 7), egal wo es definiert wurde. Vielleicht ist es ein RSpec-Problem? –
Nein, ich denke nicht, dass dies ein Problem ist. Ich denke nicht, dass der obige Code die beabsichtigte Verwendung von Modulen in der Konfiguration ist. Ich bin mir ziemlich sicher, dass das Modul in jeder Beispielgruppe enthalten sein wird, einschließlich verschachtelter, so dass es sinnvoll ist, dass mein 'before (: all)' vor jeder Beispielgruppe läuft. – brad