AutoMoq абстрактный класс с конкретным конструктором

Есть ли способ настроить AutoFixture.AutoMoq таким образом, чтобы при насмешке над абстрактным классом он использовал определенный конструктор?

Мне нужно проверить реализацию, выполненную в моем абстрактном классе. Однако мне нужно использовать один конкретный конструктор.

public abstract class A
{
    public A(IQueryable q) // I need to use this
    { /*...*/ }
}

С уважением,


РЕДАКТИРОВАТЬ:

Я пытаюсь использовать что-то вроде ниже, но все еще не работает. Класс абстрактный, поэтому мне нужно издеваться над ним, но мне нужен очень специфический конструктор.

Как сообщить AutoMoq, что при имитации A не используйте ни MockConstructorQuery, ни GreedyMockConstructorQuery. Просто используйте QueryableParamConstructorQuery.

приспособление.Customize(новый ConstructorCustomization(typeof(A), новый QueryableParamConstructorQuery()));


person Adanay Martín    schedule 28.03.2017    source источник


Ответы (1)


Если вам нужен конкретный конструктор, вы можете передать список аргументов при создании тестового двойника:

var q = fixture.Create<IQueryable>();
var a = new Mock<A>(q).Object;

Если вам нужно изменить поведение AutoFixture, чтобы всегда использовать этот конкретный конструктор, вы можете сделать что-то вроде этого:

fixture.Register(q => new Mock<A>(q));
person Mark Seemann    schedule 29.03.2017
comment
Это здорово, но на самом деле я искал приспособление.Create‹A›(q) или каким-то образом приспособление.Create‹A›() знает, что мне нужен конструктор, который получает запрос или список, а не, например. тот, который получает строку подключения к базе данных. Я здесь новичок. - person Adanay Martín; 29.03.2017