У меня возникают проблемы при использовании платформы Effort (версия 1.1.4) для модульного тестирования моего уровня БД.
У меня есть уровень БД с использованием Entity framework 6.1.3, и модель создается с использованием подхода, ориентированного на базу данных, поэтому существует файл *.edmx
, описывающий модель.
Я создал частичный класс, чтобы предоставить дополнительный конструктор, используемый модульными тестами, с такими усилиями:
public partial class Entities
{
public Entities(DbConnection connection)
: base(connection, true)
{
}
}
Простой юнит-тест выглядит так:
private Entities CreateContext()
{
//var connectionString = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
//var connection = Effort.EntityConnectionFactory.CreateTransient(connectionString);
//return new Entities(connection as DbConnection);
var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities");
var context = new Entities(connection);
return context;
}
[TestMethod]
public void Testing_Effort_Integration()
{
using (var context = CreateContext())
{
var entity = context.TableEntity.FirstOrDefault(i=> i.Id);
Assert.IsNotNull(entity);
}
}
Когда я запускаю модульный тест, он выдает исключение для строки:
var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities");
{"Поставщик не вернул экземпляр ProviderManifest."} InnerException Message: {"Не удалось определить версию хранилища; требуется действительное подключение к хранилищу или указание версии."}
Другие сообщения, которые я нашел, предлагают изменить атрибут ProviderManifestToken
в файле *.edmx
с «2012» на «2008». Кажется, это решает проблему, но вместо этого дает другое исключение при попытке использовать контекст в первый раз здесь:
var entity = context.TableEntity.FirstOrDefault(i=> i.Id);
NotSupportedException Не удалось определить имя поставщика для фабрики поставщиков типа «System.Data.EntityClient.EntityProviderFactory». Убедитесь, что поставщик ADO.NET установлен или зарегистрирован в конфигурации приложения.
Кто-нибудь знает, как решить эту проблему, чтобы я мог использовать Effort с подходом Entity Framework 6.1.3 DB-first?
Мне удалось успешно использовать Effort (версия 1.1.4) для модульного тестирования слоев БД, созданных в EF 4 и EF 5, с подходом DB-first, поэтому я думаю, что EF-версия может представлять интерес...