@MockBean ek açıklama kullanarak sorun yaşıyorum. Dokümanlar, MockBean'ın içerikteki bir fasulyeyi değiştirebileceğini söylüyor, ancak birim testimde bir NoUniqueBeanDefinitionException alıyorum. Notu nasıl kullanacağımı göremiyorum. Repo ile dalga geçebilirsem, o zaman açık bir şekilde birden fazla fasülye tanımı olacaktır. Ben örnekler takip ediyorumSpring Boot sınamasında MockBean açıklamaları NoUniqueBeanDefinitionException neden olur
burada bulunabilir:
public interface MyMongoRepository extends MongoRepository<MyDTO, String>
{
MyDTO findById(String id);
}
Ve Jersey kaynak:
@Component
@Path("/createMatch")
public class Create
{
@Context
UriInfo uriInfo;
@Autowired
private MyMongoRepository repository;
@POST
@Produces(MediaType.APPLICATION_JSON)
public Response createMatch(@Context HttpServletResponse response)
{
MyDTO match = new MyDTO();
match = repository.save(match);
URI matchUri = uriInfo.getBaseUriBuilder().path(String.format("/%s/details", match.getId())).build();
return Response.created(matchUri)
.entity(new MyResponseEntity(Response.Status.CREATED, match, "Match created: " + matchUri))
.build();
}
}
Ve JUnit test:
https://spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-1-4Bir Mongo arşivi var
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMocks {
@Autowired
private TestRestTemplate restTemplate;
@MockBean
private MyMongoRepository mockRepo;
@Before
public void setup()
{
MockitoAnnotations.initMocks(this);
given(this.mockRepo.findById("1234")).willReturn(
new MyDTO());
}
@Test
public void test()
{
this.restTemplate.getForEntity("/1234/details", MyResponseEntity.class);
}
}
Hata mesajı:
Field repository in path.to.my.resources.Create required a single bean, but 2 were found:
- myMongoRepository: defined in null
- path.to.my.MyMongoRepository#0: defined by method 'createMock' in null
Teşekkürler. Bunu denedim ve şimdi Spring otomatik olarak TestRestTemplate'i ayarlayamaz: org.springframework.beans.factory.UnsatisfiedDependencyException: 'path.to.my.tests.TestMocks' adıyla fasulye yaratılırken hata oluştu: 'restTemplate' alanıyla ifade edilen istenmeyen bağımlılık: Nitelik yok Bağımlılık [org.springframework.boot.test.web.client.TestRestTemplate] türünde [org.springframework.boot.test.web.client.TestRestTemplate] türü fasulye: bu bağımlılık için otomatik bağlantı adayı olarak nitelendirilen en az 1 fasulye bekleniyor . – JCN
, TestResttemplate – alexbt
Ah yeah cevabını güncelledi, webenvironment kısmını kaldırdım ve unuttum. Tekrar ekledim ve şimdi DTO sınıfım için uygun HttpMessageConverter hakkında bir hata alıyorum. Bu yüzden, orijinal hatayı geçmişe ve HttpMessageConverters hakkında bilgi edinmeye başladım. Teşekkürler! – JCN