Как присоединиться к разделенным потокам выполнения TDD с помощью trompeloeil?

#c #tdd #trompeloeil

#c #tdd #trompeloeil

Вопрос:

Используя платформу модульного тестирования trompeloeil и TDD: https://github.com/rollbear/trompeloeil/blob/master/docs/reference.md

Учитывая следующие тестовые примеры

 Testcase 1:
  Expectation_A: a() is called
  Expectation_B: b() is called

Testcase 2:
  Expectation_A: a() is called
  Expectation_C: c() is called
 

Их можно легко написать с помощью TDD:

 WHEN("")
{
    REQUIRE_CALL(*myMock, a());

    AND_WHEN("")
    {
        REQUIRE_CALL(*myMock, b());
        THEN("")
        {
            objectUnderTest.call();
        }
    }

    AND_WHEN("")
    {
        REQUIRE_CALL(*myMock, c());
        THEN("")
        {
            objectUnderTest.call();
        }
    }
}
 

Однако я не знаю, как справиться со случаем, когда последовательность ожиданий одинакова в обоих тестовых примерах, после того, как одно ожидание / параметризованная область была разной в обеих последовательностях:

 Testcase 1:
  Expectation_A: a() is called
  Expectation_B: b() is called
  Expectation_D1: d1() is called
  Expectation_D2: d2() is called
  Expectation_D3: d3() is called

Testcase 2:
  Expectation_A: a() is called
  Expectation_C: c() is called   // differs
  Expectation_D1: d1() is called // same as TC1 from here on
  Expectation_D2: d2() is called
  Expectation_D3: d3() is called
 

Единственный способ, которым я знаю, как написать их с помощью TDD, это:

 WHEN("")
{
    REQUIRE_CALL(*myMock, a());

    AND_WHEN("")
    {
        REQUIRE_CALL(*myMock, b());
        REQUIRE_CALL(*myMock, d1());
        REQUIRE_CALL(*myMock, d2());
        REQUIRE_CALL(*myMock, d3());
        THEN("")
        {
            objectUnderTest.call();
        }
    }

    AND_WHEN("")
    {
        REQUIRE_CALL(*myMock, c());
        REQUIRE_CALL(*myMock, d1());
        REQUIRE_CALL(*myMock, d2());
        REQUIRE_CALL(*myMock, d3());
        THEN("")
        {
            objectUnderTest.call();
        }
    }
}
 

Есть ли способ воссоединиться с потоком выполнения для тестовых наборов после того, как они отличались, или мне действительно нужно копировать и вставлять, как только 2 тестовых набора отличаются?