Насмешка носорога - Использование Arg.Matches

У меня есть функция, над которой я издеваюсь, которая принимает объект аргумента в качестве параметра. Я хочу вернуть результат на основе значений в объекте. Я не могу сравнивать объекты, так как Equals не переопределяется.

У меня есть следующий код:

_tourDal.Stub(x => x.GetById(Arg<TourGet>.Matches(y => y.TourId == 2), null)).Return(
                new Tour() 
                {
                    TourId = 2,
                    DepartureLocation = new IataInfo() { IataId = 2 },
                    ArrivalLocation = new IataInfo() { IataId = 3 }
                });

Это должно вернуть объект, указанный, когда предоставленный параметр имеет TourId 2.

Это выглядит так, как будто оно должно работать, но когда я запускаю его, я получаю следующее исключение:

При использовании Arg все аргументы должны быть определены с использованием Arg.Is, Arg.Text, Arg.List, Arg.Ref или Arg.Out. 2 аргумента ожидается, что 1 определено.

Есть идеи, что мне нужно сделать, чтобы решить эту проблему?

20
задан Rob 24 January 2012 в 23:09
поделиться

2 ответа

Вам нужно использовать тот же синтаксис для вашего второго нулевого аргумента, что-то вроде этих строк (я не тестировал это):

_tourDal.Stub(x => x.GetById(Arg<TourGet>.Matches(y => y.TourId == 2), Arg<TypeName>.Is.Null)).Return(
            new Tour() 
            {
                TourId = 2,
                DepartureLocation = new IataInfo() { IataId = 2 },
                ArrivalLocation = new IataInfo() { IataId = 3 }
            });
25
ответ дан 30 November 2019 в 00:27
поделиться

Решено:

        _tourDal.Stub(x => x.GetById(new TourGet(2), null))
            .Constraints(new PredicateConstraint<TourGet>(y => y.TourId == 2), new Anything())
            .Return(
            new Tour() 
            {
                TourId = 2,
                DepartureLocation = new IataInfo() { IataId = 2 },
                ArrivalLocation = new IataInfo() { IataId = 3 }
            });
7
ответ дан 30 November 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: