Как откатывать в EF4 для Модульного теста TearDown?

В моем исследовании об откате транзакций в EF4 кажется, что все обращаются к этому сообщению в блоге или предлагают подобное объяснение. В моем сценарии я желаю сделать это в сценарии поблочного тестирования, где я хочу откатывать практически все, что я делаю в своем контексте поблочного тестирования для удержаний от обновления данных в базе данных (да, мы увеличим счетчики, но это хорошо). Чтобы сделать это, лучше следовать следующему плану? Я пропускаю некоторое понятие или что-либо еще главное с этим (кроме моего SetupMyTest и PerformMyTest функции не будут действительно существовать тот путь)?

[TestMethod]
public void Foo
{
  using (var ts = new TransactionScope())
  {
    // Arrange
    SetupMyTest(context);

    // Act
    PerformMyTest(context);
    var numberOfChanges = context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
    // if there's an issue, chances are that an exception has been thrown by now.

    // Assert
    Assert.IsTrue(numberOfChanges > 0, "Failed to _____");

    // transaction will rollback because we do not ever call Complete on it
  }
}

6
задан abatishchev 22 April 2016 в 20:49
поделиться

1 ответ

Для этого мы используем TransactionScope.

    private TransactionScope transScope;

    #region Additional test attributes
    //
    // Use TestInitialize to run code before running each test 
    [TestInitialize()]
    public void MyTestInitialize()
    {
        transScope = new TransactionScope();
    }

    // Use TestCleanup to run code after each test has run
    [TestCleanup()]
    public void MyTestCleanup()
    {
        transScope.Dispose();
    }

Это откатит любые изменения, сделанные в любом из тестов.

10
ответ дан 10 December 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: