Свободное владение Nhibernate System.ApplicationException: для свойства "Id" ожидалось "1" типа "System.Int32", но было получено "2" типа "System.Int32" - PullRequest
0 голосов
/ 06 июля 2010

Привет, я пишу юнит-тесты для беглого Nhibernate, когда я запускаю тест в изоляции, он проходит, но когда я запускаю несколько тестов.или запустить тест более одного раза, и он начнет завершаться с ошибкой с сообщением ниже System.ApplicationException: для свойства 'Id' ожидается '1' типа 'System.Int32', но получено '2' типа 'System.Int32'

[TextFixture] public void Can_Correctly_Map_Entity () {

    new PersistenceSpecification<UserProfile>(Session)
        .CheckProperty(c => c.Id, 1)
        .CheckProperty(c => c.UserName, "user")
        .CheckProperty(c => c.Address1, "Address1")
        .CheckProperty(c => c.Address2, "Address2")

}

У меня есть решение, которое, кажется, имеет смысл здесь Свободный Nhibernate System.ApplicationException: Для свойства 'Id'ожидаемый' 1 'типа' System.Int32 ', но получил' 2 'типа' System.Int32 ', но я не уверен, как использовать это, поскольку объяснение расплывчато

1 Ответ

0 голосов
/ 08 июля 2010

Вы тестируете базу данных в памяти или физическую?Я бы посоветовал протестировать ваши сопоставления с помощью базы данных в памяти, чтобы вы могли изолировать эти тесты от проверки только сопоставлений.Если вы используете базу данных в памяти, вы можете поместить FluentConfiguration в метод [TestInitialize] (MSTest) или [SetUp] (NUnit), и база данных будет создаваться с нуля каждый раз.Вот пример:

[TestInitialize] 
public void PersistenceSpecificationTest() 
{ 
    var cfg = Fluently.Configure() 
        .Database(SQLiteConfiguration.Standard.InMemory().UseReflectionOptimizer()) 
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserProfile>()) 
        .BuildConfiguration(); 

    _session = cfg.BuildSessionFactory().OpenSession(); 
    new SchemaExport(cfg).Execute(false, true, false, _session.Connection, null); 
} 

Тогда ваш тест должен работать нормально при каждом запуске:

[TestMethod]
pulic void CanMapUserProfile()
{
    new PersistenceSpecification<UserProfile>(_session)    
        .CheckProperty(c => c.Id, 1)    
        .CheckProperty(c => c.UserName, "user")    
        .CheckProperty(c => c.Address1, "Address1")    
        .CheckProperty(c => c.Address2, "Address2") 
}

Вам потребуется использовать SQLite в этом сценарии вместе с System.DataDLL-библиотека .SQLite, которую вы можете найти здесь: http://sqlite.phxsoftware.com/

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...