Какие библиотеки фиктивных объектов доступны для D? - PullRequest
12 голосов
/ 26 января 2011

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

Ответы [ 4 ]

6 голосов
/ 26 января 2011

Единственная библиотека ложных объектов, о которой я знаю, это DMocks , но она заброшена. Может не скомпилироваться с последними версиями компилятора. Возможно BlackHole , WhiteHole и AutoImplement из std.typecons помогут вам в некоторой степени.

3 голосов
/ 10 ноября 2013
  • DMocks-revived - это фальшивый объектный каркас для языка программирования D, написанный также на D.
  • Дунит (кочевник) Расширенный инструментарий модульного тестирования.
1 голос
/ 14 августа 2014

Я автор 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

1 голос
/ 14 февраля 2011

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

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

    Engine engine;
    Wheel[4] wheels;
}

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

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

Давайте проверим автомобиль с таким поломанным двигателем.

...