У меня есть эта странная проблема при попытке подделать интерфейс с помощью MockedClass.Setup (x => x.Method()).Невозможно Mock интерфейс метода, когда параметр MultipartFormDataStreamProvider
Это интерфейс, который я издеваюсь.
public interface IClassFactory
{
object GetValueFromFormData(string key, MultipartFormDataStreamProvider provider);
}
Это мой тест.
[TestMethod]
[ExpectedException(typeof(NullReferenceException))]
public async Task ClassApiController_ImportClassList_ThrowsNullReferenceExceptionWhenNoClassId()
{
// Arrange
_classFactory = new Mock<IClassFactory>();
// THIS IS THE LINE THAT GIVES AN EXCEPTION
_classFactory.Setup(x => x.GetValueFromFormData("classIdNull", null)).Returns(string.Empty);
ClassApiController controller = new ClassApiController(_classRepository.Object, _surveyRepository.Object, _classFactory.Object);
// Act
string result = await controller.ImportClassList();
}
Если вы посмотрите на мой комментарий «это линия, которая дает ИСКЛЮЧЕНИЕ», которую вы видите, я отправить пустой, но это не имеет значения, если я посылаю MultipartFormDataStreamProvider
как instansiated класса, а я до сих пор получаю такое же исключение.
Exception message: System.ArgumentException: Expression of type 'System.Net.Http.MultipartFormDataStreamProvider' cannot be used for parameter of type 'System.Net.Http.MultipartFormDataStreamProvider' of method 'System.Object GetValueFromFormData(System.String, System.Net.Http.MultipartFormDataStreamProvider)'
Если вы знаете, почему я не могу издеваться метод только потому, что он имеет этот объект в качестве параметра, пожалуйста, помогите мне, я невежествен.
Спасибо!
EDIT: См решение в моем ответе
Вы пытались изменить тип на 'IMultipartStreamProvider' в методе GetValueFromFormData? –