Код: Выделить всё
@Component
public class MyVaultClass {
private final String vaultValue1;
private final String vaultValue2;
@Inject
public MyVaultClass (@Value("${vaultValue1}") String vaultValue1,
@Value("${vaultValue2}") String vaultValue2 {
this.vaultValue1 = vaultValue1;
this.vaultValue2 = vaultValue2;
//Now the values are set
}
}
< /code>
И это услуга, которая его реализует. < /p>
Нет необходимости явно вызывать конструктор для myvaultclass или myservice. < /p>
@Component
public class MyService {
private final MyVaultClass myVaultClass ;
@Inject
public MyService (MyVaultClass myVaultClass ) {
this.myVaultClass = myVaultClass;
}
}
< /code>
И это работает очень хорошо, чтобы установить значения в myvaultclass для значений в хранилище.@RunWith(EasyMockRunner.class)
public class MyVaultClassTest {
@Mock
private MyVaultClass myVaultClass;
//This fails when the test is run
@Inject
public MyVaultClassTest (MyVaultClass myVaultClass) {
this.myVaultClass = myVaultClass;
}
}
< /code>
И если я сделаю что -то подобное, он не выйдет из строя во время выполнения - но значения, которые он должен захватить из хранилища.@RunWith(EasyMockRunner.class)
public class MyVaultClassTest {
@Mock
private MyVaultClass myVaultClass;
//This won't fail during runtime - but the vault values are null
@Before
public void setUp() {
documentManager = new S3DocumentManager(@Value("${vaultValue1}"), @Value("${vaultValue2}"));
}
}
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/794 ... -unit-test