반응형
다중 Moq It.Is() 일치하는 인수
Moq에서 둘 이상의 일치 인수를 갖는 것이 유효합니까?
It.Is<string>()
이 예에서는 mockMembershipService가 제공된 사용자에 따라 다른 ProviderUserKey를 반환하기를 원합니다.
mockMembershipService.Setup(
x => x.GetUser(
It.Is<string>(
s => s.Contains("Joe")))
.ProviderUserKey)
.Returns("1234abcd");
mockMembershipService.Setup(
x => x.GetUser(
It.Is<string>(
s => s.Contains("Tracy")))
.ProviderUserKey)
.Returns("5678efgh");
SetUp은 기본적으로 각각의 장점을 평가하는 대신 두 번째 문을 사용합니다.
혼란스럽지 않나요? GetUser 메서드를 모의하려고하지만 해당 함수의 반환 값 속성에 대한 반환을 설정했습니다. 또한 mocked 메서드를 기반으로 반환 유형의 속성을 지정하려고합니다.
더 명확한 방법은 다음과 같습니다.
mockMembershipService.Setup(x => x.GetUser(It.IsAny<string>())
.Returns<string>(GetMembershipUser);
멤버십 모의를 만드는 방법은 다음과 같습니다.
private MembershipUser GetMembershipUser(string s)
{
Mock<MembershipUser> user =new Mock<MembershipUser>();
user.Setup(item => item.ProviderUserKey).Returns(GetProperty(s));
return user.Object;
}
그런 다음 해당 속성을 설정하는 방법을 작성합니다.
private string GetProperty(string s)
{
if(s.Contains("Joe"))
return "1234abcd";
else if(s.Contains("Tracy"))
return "5678efgh";
}
입력을 "Joe"및 "Tracy"로만 제한하려면에서 여러 조건을 지정할 수 있습니다 It.Is<T>()
. 같은 것
mockMembershipService.Setup(x => x.GetUser(It.Is<String>(s => s.Contains("Joe")
|| s.Contains("Tracy")))
.Returns<string>(/* Either Bartosz's or Ufuk's answer */);
Succesive Setup 호출은 이전 설정을 무효화합니다.
반환 콜백에서 인수를 사용할 수 있습니다.
mockMembershipService.Setup(x => x.GetUser(It.IsAny<string>()).ProviderUserKey).Returns<string>(s =>
{
if(s.Contains("Joe"))
return "1234abcd";
else if(s.Contains("Tracy"))
return "5678efgh";
});
전달 된 인수를 주장하는 것이 중요하다면 It.Is<string>(...)
대신 It.IsAny<string>(...)
.
Moq 소개> 대응 인수 문서 를 확인하십시오 .
// matching Func<int>, lazy evaluated
mock.Setup(foo => foo.Add(It.Is<int>(i => i % 2 == 0))).Returns(true);
// matching ranges
mock.Setup(foo => foo.Add(It.IsInRange<int>(0, 10, Range.Inclusive))).Returns(true);
// matching regex
mock.Setup(x => x.DoSomething(It.IsRegex("[a-d]+", RegexOptions.IgnoreCase))).Returns("foo");
참고 URL : https://stackoverflow.com/questions/9122070/multiple-moq-it-isstring-matching-arguments
반응형
'Program Tip' 카테고리의 다른 글
콘솔에 wchar_t 값을 어떻게 인쇄 할 수 있습니까? (0) | 2020.11.18 |
---|---|
If-less 프로그래밍 (기본적으로 조건부 없음) (0) | 2020.11.18 |
System.out.println의 다중 스레드 출력이 인터리브 됨 (0) | 2020.11.18 |
CQRS 이벤트 소싱 : UserName 고유성 확인 (0) | 2020.11.18 |
Bash : 첫 번째 명령 줄 인수를 취하고 나머지는 전달 (0) | 2020.11.18 |