可选的MultipartFile无法与HtmlUnit合作

问题描述

我有一个使用Thymeleaf的Spring Boot 2.3.0应用程序。

我有一个表单,其中有一个<input type='file'>和Java中相应的表单数据对象:

public class UserFormData {
  private multipartfile avatarFile;

  // getters and setters
}

我的<form>enctype="multipart/form-data"。在实际应用中一切正常。

但是,当运行HtmlUnit测试时,我得到:

字段“ avatarFile”上的对象“用户”中的字段错误:拒绝的值[];代码[typeMismatch.user.avatarFile,typeMismatch.avatarFile,typeMismatch.org.springframework.web.multipart.multipartfile,typeMismatch];参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[user.avatarFile,avatarFile];参数[];认消息[avatarFile]];认消息[未能将类型'java.lang.String'的属性值转换为属性'avatarFile'的必需类型'org.springframework.web.multipart.multipartfile';嵌套异常为java.lang.IllegalStateException:无法将属性“ avatarFile”的类型“ java.lang.String”的值转换为所需的类型“ org.springframework.web.multipart.multipartfile”:找不到匹配的编辑器或转换策略]

测试使用@WebMvcTest启动测试的Spring上下文。

解决方法

模拟https://github.com/spring-projects/spring-mvc-showcase/blob/master/src/test/java/org/springframework/samples/mvc/fileupload/FileUploadControllerTests.java之类的多部分文件,以免类型不匹配。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...