我在试着为Spock中的控制器写一个测试。
@ContextConfiguration(loader = SpringApplicationContextLoader.class,
classes = [Application.class, CreateUserControllerTest.class])
@WebAppConfiguration
@Configuration
class CreateUserControllerTest extends Specification {
@Autowired
@Qualifier("ble")
PasswordEncryptor passwordEncryptor
@Autowired
UserRepository userRepository
@Autowired
WebApplicationContext context
@Autowired
CreateUserController testedInstance
def "Injection works"() {
expect:
testedInstance instanceof CreateUserController
userRepository != null
}
@Bean
public UserRepository userRepository() {
return Mock(UserRepository.class)
}
@Bean(name = "ble")
PasswordEncryptor passwordEncryptor() {
return Mock(PasswordEncryptor)
}
}
应用程序类只是Spring Boot最简单的配置(支持自动扫描)。它提供了一个with PasswordEncryptor。我想用提供模拟的bean替换应用程序中的这个bean。
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.jasypt.util.password.PasswordEncryptor] is defined: expected single matching bean but found 2: provide,ble
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
... 54 more
public class CreateUserController {
@Autowired
private PasswordEncryptor encryptor;
}
没有@qualifier
注释,所以Spring不知道应该注入哪个bean。不幸的是,我不知道如何让Spring通过本地配置从应用程序中替换passwordencryptor
bean。
@qualifier
用于连接一个特定的bean实例,如果您有同一个接口的多个实现。
但是在spring上下文中,您仍然需要为每个bean提供一个“唯一”的名称。
因此,您试图注册两个名为'PasswordEncryptor
'的bean。一个在测试中,另一个似乎在实际代码'application.class
'中。
@Mock
private PasswordEncryptor passwordEncryptor;
or
@Spy
private PasswordEncryptor passwordEncryptor;
您有两个@bean(name=“...”)实例定义了passwordencryptor
,因此Spring上下文在选择哪个字段“自动连接”时会混淆。
当在嵌入了tomcat的spring boot中运行代码时,Spring cloud consul可以像预期的那样工作。 当我们在独立的tomcat上部署代码时,它不起作用。似乎有一个Web服务器上启动领事服务注册。仅当我们在带有嵌入式 tomcat 的Spring启动内运行代码时,才会触发此事件。 https://github.com/spring-cloud/spring-cloud-cons
我正在启动一个基于Stephan Zerhusen出色的SpringBoot JWT演示的项目。它在我的SpringToolSuite项目中安装并运行良好。我对它的进一步开发遇到了问题。 我想将Stephan的代码(org.zerhusen)与我的业务逻辑(com.mypackage)分开。我尝试过的@SpringBootApplication和@ComponentScan配置都不适用于我。 Sp
css在中不工作,但使用此css代码。我在css区域和html标记中首先编写,然后编写。为什么? CSS HTML
服务被调用,但我的问题是这行代码 不起作用,我的意思是它真的调用了adminDao。选择方法,从而从数据库中获取结果。这是我不想要的。你知道如何模拟方法调用吗?
pom.xml版本信息: SpringFox-Swagger2:2.5.0 昂首阔步-核心:1.5.10 springfox-swagger-ui:2.6.1 Springboot:1.5.3 我有一个项目与swagger2和Springboot。 没有@Aspect的项目代码工作得很好。 正确的结果: 但是当我添加以下代码时,swagger-ui没有显示test-api-impl。 swagge
我正在尝试使用龙目岛和MapStruct配置SpringBoot(v2.6.2),已经配置了maven编译器插件和龙目岛地图结构绑定(注释处理器路径),但龙目岛类尚未创建: pom.xml 尝试使用DI时总是出现未初始化变量错误: 变量xxxx可能尚未初始化