Wir haben eine wahnsinnig datengesteuerte Anwendung. Wir wollen die Anwendung testen, aber Entwickler sind aufgrund des Datenvolumens nicht in der Lage, komplett gefälschte Repositories zu erstellen. Ich beschuldige sie nicht wirklich.Unit Testing ASP.NET MVC mit Daten
Verstehen, dass wir Tests in eine bestehende Anwendung nachrüsten. Wenn wir anfangen würden, würden wir eine Menge architektonischer Änderungen vornehmen, um bessere Komponententests mit gefälschten Repositories zu ermöglichen.
Wir möchten eine bekannte MDF-Datei mit den Tests verteilen, kopieren und für die Durchführung unserer Tests verwenden. Gibt es dafür eine anerkannte Technik? Ich bin vertraut mit dem Einbetten von Ressourcen in die Test-DLL, aber nicht mit dem Einbetten von MDFs - wenn das überhaupt möglich ist.
Eine Lösung (Art):
ich auf spöttische Linq Daten Kontexten die DataContextWrapper von Andrew Tokeley der Post nehmen endete (http://andrewtokeley.net/archive/2008/07/06/ mocking-linq-to-sql-datacontext.aspx) und erstellt eine FakeDataContext.cs, die im Grunde eine Reihe von Listen ist.
Ich schrieb eine wahrhaft barbarische T4-Vorlage (man denke an „select * from < # = table.BaseClass.QualifiedName #>“) die Daten aus einer bekannten guten Datenbank zu kopieren, um eine große Klasse vollen Sachen zu schaffen wie:
List<Customer> _customers = new List<Customer>();
_customers.Add(new Customer(){CustomerId = 1, CustomerName = "ACME"});
usw.
Die Klasse ist 25K Linien aber da t4 schreibt alle jene Linien, wer sich interessiert? Es erlaubt uns, nur den Datenkontext zu verspotten, so dass wir unsere linq gegen den falschen Kontext mit einiger angemessener Sicherheit testen können, wir haben die Anfragen richtig. Die ursprünglichen Entwickler setzen eine Menge Geschäftslogik in das Repo, so dass wir die Logik gegen bekannte gute Daten testen können.
Sie suchen nach einer Möglichkeit, Integrationstests durchzuführen, für die @Jakub eine gute Antwort geliefert hat. Welchen Testrahmen verwenden Sie? – mkchandler
Vanille VS 2010, um unsere Einheit (kleine Integration?) Tests zu fahren. So etwas wie: Sperrt die Mitgliedschaftsebene ein Konto nach 5 falschen Passwörtern korrekt ?. Das, und eine Menge Selenium, um das ganze Durcheinander zu überprüfen, arbeitet Suppe zu Nüssen. –