Was ist das korrekte Format für die Verwendung shoulda-matchers und RSpecs neue expect syntax?shofatimatchers RSpec erwarten Syntax
Antwort
Während man könnte sicherlich den shoulda-Matcher mit der neuen erwarten Syntax wie folgt:
it 'should validate presence of :email' do
expect(subject).to validate_presence_of :email
end
oder prägnantes aber weniger lesbar:
it { expect(subject).to validate_presence_of :email }
die Einzeiler should
Format dieser Üblicherweise werden Matcher mit verwendet, was explizit in 2.14 unterstützt wird, auch wenn config.syntax == :expect
. Wenn should
als mit einem impliziten Gegenstand verwendet:
describe User
it { should validate_presence_of :email }
end
es beruht nicht auf den Affen Patchen von Kernel
dass should
sonst abhängt.
Dies ist in https://github.com/rspec/rspec-expectations/blob/master/Should.md abgedeckt. In der Tat verwendet diese Dokumentation sogar das obige shoulda
Matcher-Beispiel, um diese Ausnahme zu veranschaulichen.
Siehe auch Using implicit `subject` with `expect` in RSpec-2.11, in der eine Konfigurationsoption beschrieben wird, die Sie als Alternative zu it
verwenden können.
expect_it { to validate_presence_of :email }
Update: Ab RSpec 3.0 (Beta2), werden Sie auch nutzen können:
it { is_expected.to validate_presence_of :email }
Der erste Block würde auch von 'desribe User' umgeben sein, richtig? Es sieht aus wie ein Vergleich von 3 Zeilen zu 3 verschiedenen Zeilen, ist aber nicht ganz so. Wenn dies der Fall sein sollte, könnte dies zur Klarheit im ersten Codeblock hinzugefügt werden. –
@MichaelDurrant Ja, würde es. Einverstanden. Danke, dass du darauf hingewiesen hast. Antwort aktualisiert –
Hat jemand eine Idee, wofür der Downvote ist? Handelt es sich um die Schlussabstimmung dafür, dass dies "hauptsächlich auf der Meinung der Befragten" beruht? –
Ich werde die Antwort von @ Peter-alfvin suplement. Für den Fall, testen Sie das Modell und seine Migration selbst mit shoulda-matchers
Sie nicht :expect
außerhalb von it
Block verwenden können, so schreiben kann:
RSpec.describe ModelName, type: :model do
expect(subject).to belong_to(:user)
end
Und Sie werden die expection erhalten:
`expect` is not available on an example group (e.g. a `describe` or `context` block).
aber korrekte Version ist:
RSpec.describe ModelName, type: :model do
it { expect(subject).to belong_to(:user) }
end
- 1. RSpec erwarten
- 2. RSpec erlauben/erwarten vs nur erwarten/and_return
- 3. konvertieren alte Rspec Syntax in neue Syntax
- 4. RSpec: Erwarten Sie, mehrere zu ändern
- 5. Verwenden von Let und erwarten in Rspec
- 6. RSpec 'Expect' Syntax und Idiomatic Attributesp
- 7. rspec umständlich Syntax zu testen Änderungszählwert
- 8. Was ist die passende Rspec Syntax
- 9. RSpec/Shoulda validate_presence_of mehrere Attribute Syntax
- 10. Rspec/Capybara: Wie kann man "Routing Error" erwarten?
- 11. Kann RSpec Änderungen in zwei Tabellen erwarten? Änderung
- 12. Object.any_instance should_receive vs erwarten()
- 13. Sequentiell erwarten VS Fortsetzung erwarten
- 14. Wie konvertiert man die Syntax von errors_on in RSpec 3?
- 15. Was ist die RSpec-Syntax entspricht für Assert (Minitest)
- 16. Jasmine erwarten Logik (erwarten A oder B)
- 17. rspec Die Syntax erwartet nicht Operator Matcher unterstützt, so dass Sie einen Matcher `# to`
- 18. Wie können Sie in RSpec mehrere Nachrichten mit unterschiedlichen Parametern in beliebiger Reihenfolge erwarten?
- 19. Wie kann ich vor dem Block "erwarten", etwas in rspec zu ändern?
- 20. Rspec: Wie verwendet man erwarten, mit einer Ressource zu erhalten, die noch nicht existiert?
- 21. RSpec any_instance deprecation: Wie wird es behoben?
- 22. RSpec vs Gurke (RSpec stories)
- 23. RSpec: Stub private Methode
- 24. Unterschied zwischen interagieren, erwarten und beenden in erwarten Skript
- 25. Jasmine array.length erwarten
- 26. Async erwarten und parallel
- 27. Reguläre Ausdrücke in erwarten
- 28. ThreadLocal und erwarten
- 29. Installation erwarten für bash
- 30. Wie async serialisieren/erwarten?
Sorry, ich meinte shoulda – trev9065
Im Hinblick auf die Abstimmung zu schließen auf der Grundlage dieser ist in erster Linie Meinung basiert, I wou Ich würde argumentieren, dass diese besondere Frage, ob etwas eine "gute Idee" ist, eine Ausnahme darstellt, weil es eine faktenbasierte Erklärung gibt, dass das Problem ein Nicht-Problem ist. –
hat das Fragedetail bearbeitet, um es für SO geeignet zu machen. –