Дразнить только некоторые поля в тестируемом классе - PullRequest
0 голосов
/ 10 мая 2018

У меня тестируемый класс. например,

@Service
public classs AService {
   @Autowired
   Field1 field1;
   @Autowired
   Field2 field2;

   void foo() { // .... }
}

Я хочу издеваться field1, но не field2.

Я использую mockito следующим образом

@RunWith(SpringRunner.class)
@SpringBootTest
public class AServiceTest {

@Mock
private Field1 field1;

@InjectMocks
private AService aService;

@Before
public void setUp() {
    MockitoAnnotations.initMocks(this);
}

@Test
public void fooTest() {
// setup mocking behaviour and test
}

но, как и ожидалось, в этом случае field2 будет нулевым при запуске теста. Обратите внимание, что Field2 - это интерфейс, который SpringBoot превращает в код (например, Repository), и поэтому я не могу / не хочу явно указывать его.

Есть мысли?

1 Ответ

0 голосов
/ 10 мая 2018

Поскольку вы используете загрузку Spring с @SpringBootTest, вам не нужно беспокоиться о том, чтобы самостоятельно вводить макеты с @InjectMocks. Просто определите field1 как @MockBean и @Autowire ваш сервис, и Spring boot сделает всю работу за вас:

@RunWith(SpringRunner.class)
@SpringBootTest
public class AServiceTest {

@MockBean
private Field1 field1;

@Autowired
private AService aService;

@Test
public void fooTest() {
// setup mocking behaviour and test
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...