2014-10-01 2 views
0

Я хочу, чтобы убедиться, что выражение в лямбда такое же, как и ожидалось выражениеRhino Mocks Тестирование лямбда-выражения

Также я хочу написать тестовый пример для ожидаемого значения

Если я пишу сопрягать это не работает

Например

public bool IsUserActive(User user) 
{ 
    userRepository.Any(x=>x.UserId== user.UserId && x.IsActive); 
} 

испытания блока Case

userRepository.Stub(x=>x.IsActive(Arg<User>.Matches(y=>y.IsActive)).Return(true); 

Приведенное выше выражение не работает

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

не имя пользователя строка

stubUserRepository.Stub(x => 
    x.GetUserByName(Arg<string>.Matches(y => 
    y.StartsWith("aye", StringComparison.InvariantCulture) 
     || y.StartsWith("stein", StringComparison.InvariantCulture))) 
    .Return(theUser); 
Assert.AreSame(theUser, stubUserRepository.GetUserByName("steinegger")); 
Assert.AreSame(theUser, stubUserRepository.GetUserByName("ayende")); 
+7

Вместо того, чтобы утверждать, что лямбда соответствует точно лямбда, что вы ожидаете его к вам, вы должны проверять, что метод выводит значение, которое вы ожидаете для каждого из различных различные типы входов. Тестирование, что написанный код - это код, который вы написали, не особенно продуктивен. – Servy

ответ

0

Использовать AbstractConstraint атрибут

public class UserConstraint :AbstractConstraint 

и переопределить Равно соответствовать contstraint

_dataSericeValidator.AssertWasCalled(
       x => 
        x.ValidateRequestUser(Arg<UserDto>.Matches(new UserConstraint (_userDto)))); 
Смежные вопросы