Ich teste eine Phönix/Elixier-Anwendung, und ich finde mich mit etwas wie die folgenden eine ganze Menge.Assert Muster übereinstimmen in Phoenix Tests
player = insert(:player)
assert [%Player{id: x}] = Players.site_players(player.site_id)
assert x == player.id
Dies erfüllt die Dinge, die ich will, vor allem sichergestellt, dass Players.site_players/1 gibt einen Array zurück und das Array mit dem Player. Ich habe das Gefühl, dass dies prägnanter gemacht werden könnte. Irgendwelche Vorschläge?
Der beste Weg des Trocknens wäre es all diese Tests zu entfernen. Sie testen "DB" -Funktionalität und "Ecto" -Funktionalität. Das macht keinen Sinn. Tests in _ihr_ Anwendung sollten Ihre Anwendung testen, nicht "Ecto", das eigene Tests hat. – mudasobwa
Ich teste, dass mein Code (in diesem Fall die Methode site_players) Ecto bittet, die entsprechenden Dinge zu tun. Dies ist der einfachste Ort, an dem ich auf das Muster stoße, das ich aus Gründen der Veranschaulichung auswählen möchte. An anderen Stellen läuft es gegen komplizierteren Code. – biagidp
Überhaupt nicht. 'defmodule Spieler, do: def site_players (id), do:% Player {id: id}' Implementierung von 'Player' _ würde diesen Test nicht überraschend bestehen_. Was im Grunde bedeutet, dass Sie die ** Implementierungsdetails ** testen. – mudasobwa