Ответ 1
Проблема с DataContext заключается в том, что он не предназначен для насмешек.
Свободным инструментом для издевательств над unmockable является Moles from Pex (Pex moles?). Его примерно эквивалентно TypeMock.
Я люблю новый мир, который является С#, я пришел к делу с моими игрушечными программами, где я хочу начать писать отдельные тесты.
В моем коде в настоящее время используется база данных через объект DatabaseDataContext (файл *.dbml), какой лучший способ создать макет для этого объекта? Учитывая, насколько легко создавать базу данных LINQ → код SQL и как часто это необходимо, я надеюсь, что VS2010 имеет встроенные функциональные возможности для тестирования.
Если я уйду, и это нужно сделать вручную, можете ли вы рассказать мне о вашем предпочтительном подходе?
Большое спасибо,
Гэвин
Проблема с DataContext заключается в том, что он не предназначен для насмешек.
Свободным инструментом для издевательств над unmockable является Moles from Pex (Pex moles?). Его примерно эквивалентно TypeMock.
Лучший способ, который я знаю, - извлечь этот объектный интерфейс и использовать его для создания объекта mock, поэтому действительно не имеет значения, используете ли вы linqtosql или EF для связи с базой данных, или если вы разговариваете с любой базой данных на все.
[Отказ от ответственности: я работаю в Typemock]
Вы можете использовать Typemock Isolator для создания поддельного объекта и установить его методы для возврата того, что вам нужно:
var fakeContext = Isolate.Fake.Instance<DatabaseDataContext>();
Взгляните на это сообщение в блоге о том, как подделать Linq2Sql: Подделка LINQ to SQL DataContext Tables with Isolator
Немногие вещи, которые могут вам пригодиться:
Moq (произносится как "Mock-you" или просто "Mock" ) - единственная насмешливая библиотека для .NET, разработанный с нуля до в полной мере использовать .NET 3.5 (т. Linq) и С# 3.0 (например, лямбда-выражения) которые делают его наиболее продуктивным, безопасный тип и рефакторинг доступная библиотека. И это поддерживает насмешливые интерфейсы, а также классы. Его API чрезвычайно прост и прямо, и не требуют каких-либо предварительных знаний или опыт с насмешливыми понятиями.
LINQPad позволяет интерактивно запрашивать базы данных в современном языке запросов: LINQ. Поцелуй до свидания с SQL Management Студия!
LINQPad поддерживает все в С# 3.0 и Framework 3.5 и более:
LINQ для объектов LINQ to SQL и Entity Framework LINQ to XML Данные WCF Службы и SQL Azure LINQ to SQLite и MySQL Enterprise Server Mindscape LightSpeed ORM (даже старомодный SQL!)