moq를 사용하여 내 라이센스 클래스에서 함수를 모의하려고합니다. 내가 게으른 부하 객체에 MEF를 사용하고 내 통합 테스트에서moq에 술어 함수 매개 변수를 전달하지 못했습니다.
Licence TryGetLicence(Predicate<Licence> filter);
:
라이센스 클래스는 다음과 같은 인터페이스를 가지고 있습니다. 내 클래스는로드 된 객체를 찾고 사용할 수있는 라이센스가 있는지 확인해야합니다. 내 테스트를 위해 두 개의 객체를 만들고 그 중 하나는 라이센스가 부여됩니다. 나는 moq을 사용하여이 객체에 대한 라이선스 만 반환하고 다른 클래스에 대해서는 null을 반환하려고합니다. 실제 클래스처럼. 문제는 moq이 술어를 전달하는 것을 좋아하지 않는다는 것입니다. moq가 이런 식으로 술어를 처리하지 못하거나 그냥 잘못 구현 한 것인지 잘 모르겠습니다. 여기
위의 인터페이스를 위해 MOQ을 설정 내 테스트에서 내가 가진 코드의 라인은 다음과 같습니다 가var lic = new Licence
{
LicId = Guid.Parse("53024D4E-3A01-4489-A341-753D04748EB9"),
LicName = "test",
Count = 1,
ExpiryDate = DateTime.Now.AddDays(2)
};
var mockAgent = new Mock<ILicenceAgent>();
mockAgent.Setup(x => x.TryGetLicence (y => y.LicId == lic.LicId)) Returns(lic);
이 빌드하지만 마지막 줄 명중 될 때 지원되지 않는 표현 예외가 발생합니다.
는 다른 테스트를 위해 내가 사용하고 있습니다 : 그것은 내가 넣은 두 개체에 대한 유효한 라이센스를 반환 나는 나의 새로운 시험이 사용할 수 없습니다
mockAgent.Setup(x => x. TryGetLicence (It.IsAny<Predicate<Licence>>())).Returns(lic);
.
moq를 사용하는 방식으로 사용할 수 있습니까?
감사합니다. 이것은 내가해야 할 일을합니다. 시간을 많이 절약 해 줬어. – Retrocoder