我希望 a@SpyBean
仅由一个测试使用,而不被其他测试使用。我使用弹簧靴 1.4.4。
我试图依赖配置。我希望 spy bean 仅供RegenerateTokenOnCollisionIT
.
这是我尝试过的:
@TestConfiguration
@Import(RegenerateTokenOnCollisionIT.Config.class)
public class RegenerateTokenOnCollisionIT extends BaseApplicationTest {
@Autowired
private TestRestTemplate restTemplate;
@Autowired
private TokenTools tokenTools;
@Test
public void findOrCreateTokensShouldRetryOnCollision() throws PciSecurityException {
//Will be inserted
doReturn("someGeneratedToken")
//Will conflict
.doReturn("someGeneratedToken")
//Real method will then be used by retry
.doCallRealMethod()
.when(tokenTools)
.createToken(any(TokenProfile.class), anyString(), anyString());
...
}
@TestConfiguration
static class Config {
@SpyBean
private TokenTools tokenTools;
}
}
这是BaseApplicationTest
课程:
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public abstract class BaseApplicationTest extends BaseTest {
}
和BaseTest
班级:
@RunWith(SpringRunner.class)
@ActiveProfiles(profiles = "test")
public abstract class BaseTest {
...
当然,我希望将上述Config
类添加到现有的配置BaseApplicationTest
和BaseTest
类中,但不要完全替换它们。
有人可以帮忙吗?