Я только начинаю с языка программирования D2. Мне нравится тот факт, что модульное тестирование является частью самого языка, но я не могу найти для него каких-либо макетных библиотек объектов. Есть ли там стандартный?
Какие библиотеки с макетными объектами доступны для D?
Ответ 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