Как использовать разные бобы для разных тестов - PullRequest
0 голосов
/ 02 октября 2019

Я новичок в тестировании. В приведенном ниже коде я хочу, чтобы первый тест 'test_sum_mock ()' использовал фиктивный бин, а второй метод использовал шпионский бин.

CalculatorRestControllerTests

@RunWith(SpringRunner.class)
@WebMvcTest(CalculatorRestController.class)
public class CalculatorRestControllerTests {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private Calculator calculatorMock;

    @SpyBean
    private CalculatorImpl calculatorSpy;

    @Test
    public void test_sum_mock() throws Exception {
        when(calculatorMock.sum(anyInt(), anyInt())).thenReturn(300);
        RequestBuilder requestBuilder = post("/sum?a=100&b=200");
        mockMvc.perform(requestBuilder).andExpect(status().isOk()).andExpect(content().string("300"));
    }

    @Test
    public void test_sum_spy() throws Exception {
        RequestBuilder requestBuilder = post("/sum?a=100&b=301");
        mockMvc.perform(requestBuilder).andExpect(status().isOk()).andExpect(content().string("401"));
    }

}

CalculatorRestController

@RestController
public class CalculatorRestController {

    private final Calculator calculator;

    public CalculatorRestController(Calculator calculator) {
        this.calculator = calculator;
    }

    @PostMapping("/sum")
    public Integer sum(@RequestParam Integer a, @RequestParam Integer b) {
        return calculator.sum(a, b);
    }

}

КогдаЯ запускаю эти тесты, я получаю

Не удалось загрузить ApplicationContext

, что имеет смысл. Я хочу, чтобы каждый метод тестирования как-то менял профиль ... Есть ли подобный способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...