Параметр retry_interval контролировал случай, когда сообщение не было подтверждено во время нормальной работы, то есть клиент, по-видимому, не отключился, но не отправлял подтверждения.
Повтор доставки сообщения, описанный в спецификации, охватывает случай, когда клиент повторно подключается. Такое поведение присутствует в Mosquitto, поэтому нарушения спецификации нет, и сообщения будут повторены.
Попробуйте установить IsolationLevel на транзакции. Этот фрагмент работал на меня:
using (var trans = _session.BeginTransaction(IsolationLevel.ReadUncommitted))
{
new PersistenceSpecification<Event>(_session)
.CheckProperty(p => p.StartTime, new DateTime(2010, 1, 1))
.VerifyTheMappings();
trans.Rollback();
}
PersistenceSpecification
обычно используется с базой данных в оперативной памяти как SQLite, вот почему он ничего не откатывает. Я полагаю, что существует перегрузка конструктора, которая берет ISession
экземпляр, Вы попытались получить транзакцию оттуда затем откат это после?
Я думаю, проблема здесь в том, что VerifyTheMappings () вызывает TransactionSave (), который выполняет tx.Commit () в базе данных. Как указал Джеймс, этот метод, кажется, отлично подходит для отказа от методов тестирования в памяти. Это не работает в случае тестирования сопоставлений с устаревшей базой данных.
Это не работает в случае тестирования сопоставлений с устаревшей базой данных. Это не работает в случае тестирования сопоставлений с устаревшей базой данных.Один из вариантов - использовать выделенную структуру для этой задачи. Capistrano очень хорошо подходит для языков сценариев, таких как php. Он основан на Ruby, но если вы выполните поиск, вы сможете найти инструкции о том, как использовать его для развертывания приложений php.
framework, но вы можете сделать это с любой структурой тестирования, которую хотитеsessionfactoryprovider должен предоставить объект isession
вот пример использования
/// <summary>
/// Testing the mapping of our entities.
/// there must be a server connection for this kind of test.
/// </summary>
[TestFixture]
internal class someMappingTest
{
[Test(Description = "Check the Encoding Profile FluentNHibernate Mapping")]
[Timeout(20000)]
public void checkthatMappingWorks()
{
// creatw the new entity
TestedType testOn = new TestedType();
// set the initialization values
testOn.Name = "TestProfileExecution";
// create the test object
new GenericMappingTesterWithRealDB<TestedType>
{
// assign an entity
EntityToTest = testOn,
// assign new values for update check
PerformEntityManipulationBeforeUpdate =
delegate(TestedType testedTypeBeingTested)
{
return testedTypeBeingTested.Name = "Updateing Test";
}
}.
// call run test to perform the mapping test.
RunTest();
}
}