describe
, context
, feature
, scenario
: Was ist der Unterschied (n) unter den vier und wann verwende ich jeden?
quelle
describe
, context
, feature
, scenario
: Was ist der Unterschied (n) unter den vier und wann verwende ich jeden?
Das context
ist ein Alias für describe
, daher sind sie funktional gleichwertig. Sie können sie austauschbar verwenden. Der einzige Unterschied besteht darin, wie Ihre Spezifikationsdatei gelesen wird. Es gibt zum Beispiel keinen Unterschied in der Testausgabe. Das RSpec-Buch sagt:
"Wir neigen dazu,
describe()
für Dinge undcontext()
für den Kontext zu verwenden".
Persönlich benutze ich gerne describe
, aber ich kann sehen, warum die Leute es vorziehen context
.
feature
und scenario
sind ein Teil von Capybara und nicht von RSpec und sollen für Abnahmetests verwendet werden. feature
ist äquivalent zu describe
/ context
und scenario
äquivalent zu it
/ example
.
Wenn Sie Abnahmetests mit Capybara schreiben, verwenden Sie die Syntax feature
/ scenario
, wenn nicht die Syntax describe
/ it
.
Als ich heute Morgen einige Spezifikationen schrieb, hatte ich die gleiche Frage. Normalerweise benutze ich das hauptsächlich
describe
und denke nicht besonders darüber nach, aber heute Morgen habe ich mich mit vielen Fällen und unterschiedlichen Spezifikationen für ein Modul befasst, sodass es für den nächsten Entwickler, der diese Spezifikationen lesen wird, leicht verständlich sein musste. Also habe ich Google danach gefragt und Folgendes gefunden: beschreiben vs. Kontext in rspec , dessen Antwort ich ziemlich interessant finde:Wenn Sie sich also auf dieses Prinzip verlassen, würden Sie eine Spezifikation wie diese schreiben:
Ich bin mir nicht sicher, ob dies eine allgemein akzeptierte Regel ist, aber ich finde diesen Ansatz klar und leicht zu verstehen.
quelle
Erweiterung der ausgezeichneten Antwort von Pierre laut den Dokumenten :
Für diejenigen, die mit den Mocha-Begriffen vertraut sind und diese beschreiben (die besser geeignet sind, das Verhalten eines Tests aus der Sicht eines Benutzers zu beschreiben, daher fungiert Mocha hauptsächlich als Front-End-Test-Framework), könnten Sie:
describe
undit
oder eine andere Paarungit
innerhalb einescontext
Blocks, für den mehrere Zusicherungen / Tests in einem bestimmten App-Status erforderlich sindWenn Sie sich für die zweite Option entscheiden, können Sie weiterhin der Absicht folgen, "... eine Reihe von Tests für eine Funktionalität unter demselben Status zu pingen".
So könnten Ihre Tests folgendermaßen aussehen:
Auf diese Weise überspringen Sie das
feature
Schlüsselwort vollständig, das Sie möglicherweise für bestimmte Front-End-Funktionen verwenden möchten, oder wenn Sie FDD (Feature Driven Development) ausführen, was für einige möglicherweise unangenehm ist. Fragen Sie hier Ihr Entwicklerteam nach Eingaben.Vorsichtsmaßnahme: Befolgen Sie nicht immer die Industriestandards. Stellen Sie sich vor, wir hätten alle unsere Tests nach der Volkswagen-Philosophie modelliert.
quelle