Подтвердить что ты не робот

Какие библиотеки с макетными объектами доступны для D?

Я только начинаю с языка программирования D2. Мне нравится тот факт, что модульное тестирование является частью самого языка, но я не могу найти для него каких-либо макетных библиотек объектов. Есть ли там стандартный?

4b9b3361

Ответ 1

Единственная библиотека mock-объектов, о которой я знаю, DMocks, но она оставлена. Он не может компилироваться с недавними версиями компилятора. Может быть BlackHole, WhiteHole и AutoImplement из std.typecons поможет вам в некоторой степени.

Ответ 2

  • DMocks-revived - это макет объектов для языка программирования D, также написанный в D.
  • dunit (nomad) Инструментарий расширенного модульного тестирования.

Ответ 3

Хотя это не так интересно, как библиотека реальных макетов, я в настоящее время делаю инъекцию зависимостей с хорошими результатами следующим образом:

class Car( Engine = AtomicEngine, Wheel = CartWheel )
{
    this()
    {
        engine = new Engine;
        ...
    }

    Engine engine;
    Wheel[4] wheels;
}

Если MockEngine не поставляется, автомобиль по умолчанию использует предпочтительный AtomicEngine, который является опрятным, потому что это то, что я хочу большую часть времени. Также обратите внимание, что инъекция выполняется во время компиляции без ограничения времени выполнения для издевательских возможностей, то есть наследование не требуется.

unittest
{
    auto car = new Car!(MockBrokenEngine, MockWheel );
    car.start();
    assert(...);
}

Позвольте испытать автомобиль с таким сломанным двигателем.

Ответ 4

Я автор DUnit, который содержит насмешливое решение. Он используется следующим образом:

class Foo
{
    // Mixin mocking behaviour.
    mixin Mockable!(Foo);
}

auto foo = Foo.getMock();

foo теперь является макетом.

Ссылка здесь: http://htmlpreview.github.io/?https://github.com/nomad-software/dunit/master/docs/dunit/mockable.html

Больший пример здесь: https://github.com/nomad-software/dunit/blob/master/source/example.d