В тесте на основе AutoFixture я пытаюсь как можно точнее выразить следующее:
Когда я передаю <input>
в параметр x
этого метода, анонимно заполняя остальные параметры, результат...
Взяв пример фабричного метода: -
class X
{
public static X Create( Guid a, Guid b, Guid c, String x, String y);
Я пытаюсь выразить в виде краткой серии тестов:
- Если я передам null для
x
, он должен выдать - Если я передам null для
y
, он должен выбросить
Чтобы выразить, я могу сказать:
var fixture = Fixture();
var sut = default( Func<Guid, Guid, Guid,string,X>);
sut = fixture.Get( ( Guid anonA, Guid anonB, Guid anonC, string anonY ) =>
x =>
X.Create( anonA, anonB, anonC, x, anonY ) );
Assert.Throws<ArgumentNullException>( () => sut( null));
Для второго экземпляра, который лишь немного отличается, мне нужно сделать:
var fixture = Fixture();
var sut = default( Func<Guid, Guid, Guid,string,X> );
sut = fixture.Get( ( Guid anonA, Guid anonB, Guid anonC, string anonX ) =>
y =>
X.Create( anonA, anonB, anonC, anonX, y ) );
Assert.Throws<ArgumentNullException>( () => sut( null));
Для свойств в AutoFixture есть With
. Есть ли эквивалент аргументов метода (и/или ctor)?
PS 0. Я не возражаю, если для этого случая необходимо попасть в «магические» строки, т. Е. Иметь бит x
равным "x"
.
PS 1. Другой слон в комнате - это то, что я бьюсь головой о 4-кратные перегрузки Get
в AutoFixture - или это потому, что у меня старая версия в этой среде?
PS 2. Также открыты для лучших предложений о том, как это смоделировать - до тех пор, пока они касаются того факта, что я хочу, чтобы это был вызов метода, а не свойства или поля (и я хотел бы, чтобы он работал в стиле AutoFixture). ).