मेरे पास एक नियंत्रक वर्ग है जो ऐसा कुछ दिखता है:

@RestController
@RequestMapping("controller")
public class Controller {
    @RequestMapping("foo")
    public String method() {
        return "foo'd the bar";
    }
}

मेरा परीक्षण ऐसा दिखता है:

@WebMvcTest(Controller.class)
public class ControllerTest {
    @Autowired
    private Controller controller;

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void canCreate() throws Exception {
        Assertions.assertThat(controller).isNotNull();
    }

    @Test
    public void canGetDummy() throws Exception {
        this.mockMvc.perform(get("/controller/foo")).andDo(print()).andExpect(status().isOk());
    }
}

यह मेरे लिए थोड़ा नाजुक लगता है, नियंत्रक के लिए "आधार यूआरएल" के साथ कम से कम n+1 स्थानों पर n परीक्षण विधियों के लिए हार्डकोड किया गया है। क्या इससे बचने के लिए परीक्षण को कॉन्फ़िगर करने का कोई तरीका है (इसलिए मैं /controller/foo के बजाय /foo लिखूंगा)? मैं एक स्थिर चर का उपयोग कर सकता था, लेकिन ऐसा लगता है कि एक क्लीनर समाधान होना चाहिए।

(या क्या मैं इस गलत के बारे में सोच रहा हूं, और पूरा रास्ता लिखना अच्छा है - और उस स्थिति में, क्यों?)

0
c-x-berger 18 जून 2020, 18:31

1 उत्तर

सबसे बढ़िया उत्तर

संपूर्ण पथ /controller/foo उस वेब API का भाग है जिसका आप परीक्षण कर रहे हैं। यदि आप चाहें तो स्ट्रिंग भागों को स्थिरांक में निकाल सकते हैं, लेकिन इसे सीधे परीक्षणों में शामिल करना एक अच्छी बात है।

2
chrylis -cautiouslyoptimistic- 18 जून 2020, 16:04