Модульное тестирование ASP.NET MVC с данными

У нас есть приложение, безумно управляемое данными. Мы хотим провести модульное тестирование приложения, но разработчики сопротивляются созданию полностью поддельных репозиториев из-за объема данных. Я их не виню.

Поймите, что мы модернизируем тесты в существующее приложение. Если бы мы начинали заново, мы бы внесли массу изменений в архитектуру, чтобы облегчить модульное тестирование с поддельными репозиториями.

Мы хотели бы распространить известный mdf-файл с тестами, скопировать его и использовать для выполнения наших тестов. Есть ли для этого одобренная методика? Я знаком со встраиванием ресурсов в тестовую dll, но не со встраиванием mdf - если это вообще возможно.


Решение (вроде):

В итоге я взял DataContextWrapper от Эндрю Токли ' and created a FakeDataContext.cs that is basically a bunch of Lists.

I wrote a truly barbaric T4 template (think "select * FROM <#=table.BaseClass.QualifiedName#>") to copy the data from a known good database to create a huge class full of stuff like:

List<Customer> _customers = new List<Customer>();
_customers.Add(new Customer(){CustomerId = 1, CustomerName = "ACME"});

etc.

The class is 25K lines but since t4 writes all those lines, who cares? It allows us to mock just the data context, so we can test our linq against the fake context with some reasonable assurance we got the queries right. The original devs put a ton of business logic in the repo, so it allows us to test the logic against known good data.

6
задан Code Silverback 21 December 2010 в 15:37
поделиться