के साथ एक और वसंत सेवा के अंदर नकली सेवाएं मुझे वसंत ढांचे के भीतर अन्य सेवाओं के अंदर इंजेक्शन वाली सेवाओं का मज़ाक उड़ाते हुए समस्याएं आ रही हैं। यहाँ मेरी कोड है:मॉकिटो
@Service("productService")
public class ProductServiceImpl implements ProductService {
@Autowired
private ClientService clientService;
public void doSomething(Long clientId) {
Client client = clientService.getById(clientId);
// do something
}
}
मैं ClientService
अपने परीक्षण के अंदर नकली करना चाहते हैं, तो मैं निम्नलिखित की कोशिश की:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/spring-config.xml" })
public class ProductServiceTest {
@Autowired
private ProductService productService;
@Mock
private ClientService clientService;
@Test
public void testDoSomething() throws Exception {
when(clientService.getById(anyLong()))
.thenReturn(this.generateClient());
/* when I call this method, I want the clientService
* inside productService to be the mock that one I mocked
* in this test, but instead, it is injecting the Spring
* proxy version of clientService, not my mock.. :(
*/
productService.doSomething(new Long(1));
}
@Before
public void beforeTests() throws Exception {
MockitoAnnotations.initMocks(this);
}
private Client generateClient() {
Client client = new Client();
client.setName("Foo");
return client;
}
}
clientService
productService
अंदर स्प्रिंग प्रॉक्सी संस्करण, नहीं नकली है कि मैं चाहते हैं। क्या मैं मॉकिटो के साथ क्या करना चाहता हूं?
धन्यवाद, मैं करने की कोशिश की है कि समाधान और ठीक काम किया, लेकिन मुझे लगता है कि सेवाओं में सेटर इंजेक्शन को बदल नहीं सकते, इसलिए मेरे समाधान था करने के लिए मेरे परीक्षणों पर स्वत: नियोजित एनोटेशन को हटाएं और हाथों से सेवा बनाएं, जैसे कि: 'इंजेक्टमैक्स निजी उत्पाद सेवा उत्पाद सेवा = नया उत्पाद सेवा Impl(); ' – br4zuca
@ br4zuca आप इसे' @InjectMocks निजी उत्पाद सेवा उत्पाद सेवा 'के साथ कर सकते हैं, init में नहीं यह मैनुअल, मजाक करो यह करो – Jaiwo99
मैंने '@ इंजेक्शन मॉक्स' के साथ 'productService' को छोड़कर मॉकिटो छोड़ने की कोशिश की, लेकिन काम नहीं किया क्योंकि 'उत्पाद सेवा' एक इंटरफ़ेस है, इसे फेंक दिया गया:' org.mockito.exceptions.base.MockitoException: प्रकार 'ProductService' है एक इंटरफेस ', तो यह तुरंत चालू करने में सक्षम नहीं था। – br4zuca