@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {VedicaConfig.class})
@AutoConfigureMockMvc
@ActiveProfiles("test")
public class RESTTest {
@LocalServerPort
private int port;
@Autowired
private MockMvc mvc;
@Mock
MetaVersionDAO metaVersionDAO;
@InjectMocks
DocCtrl docCtrl;
@Before
public void contextLoads() {
RestAssured.port = port;
assertThat(mvc).isNotNull();
// this must be called for the @Mock annotations above to be processed.
MockitoAnnotations.initMocks(this);
RestAssuredMockMvc.standaloneSetup(MockMvcBuilders.standaloneSetup(docCtrl));
}
@Test
public void shouldGetThumbnail() {
String ver = "1.0";
String uuid = "124-wqer-365-asdf";
when(metaVersionDAO.getMetaByVersionUUID(ver, uuid)).thenReturn(new DocVersion());
given()
.when()
.param("uuid", uuid)
.param("versionVed", ver)
.get(CTX_BASE + "/thumbnail")
.then()
.log().ifValidationFails()
.statusCode(OK.value())
.contentType(ContentType.BINARY);
}
}
public RawDocument getDocThumbnail(String uuid, String versionVed) throws Exception {
DocVersion docVersion = metaVersionDAO.getMetaByVersionUUID(versionVed, uuid);
InputStream inputStream = okmWebSrv.getOkmService().getContentByVersion(uuid, versionVed);
String dataType = docVersion.getMetadata().getAdditionals().get(Vedantas.CONTENT_TYPE);
ByteArrayInputStream bais = new ByteArrayInputStream(createPDFThumbnail(dataType, inputStream));
RawDocument rawDocument = new RawDocument(bais, "qwer");
return rawDocument;
}
正如您所看到的,我尝试在@test
方法的顶部模拟metaversiondao
,所以我希望它返回我设置的new DocVersion()
,但是在这个DAO中调用的是实际的代码,它在entityManager上失败,它是null。
我的问题是为什么metaversiondao.getMetabyVersionUuid
不返回我的模拟对象,我应该做些什么来使其返回?
spring-mock-mvc:3.3.0spring-boot:2.1.2.发布
谢了!
通过将@mock
更改为@mockbean
来解决。
事实就是如此:
@MockBean
MetaVersionDAO metaVersionDAO;
其他一切都与post中的一样,它使用了mocked实例。
我有这样的配置 在包中,有一个组件需要中的存储库。 这适用于spring数据MongoDB 1.5.2版 如果我升级到任何高于1.6.0.release的版本(我尝试过1.6.2和1.7.0),这将不再有效。这就好像mongo存储库扫描不工作,我得到了错误: 有什么想法吗? 更新:如果我使用MongoRepository而不是PagingAndSortingRepository,它可以工作: 这不
我想知道,当我们为客户提供新的更新时,是否有丢失这些文件的风险。如果有更好的解决方案,上传文件和获取文件链接之后,与.NET core请告诉我:)
java java 在TaskServiceImpl.java.FindAll(pageRequest)中返回NULL。我不太熟悉Mockito,想知道用它创建模拟存储库是否会导致问题?当我这样做时,它工作得很好。findall()没有分页。我使用PagingAndSortingRepository中的findAll(Pageable)方法有问题吗?谢了!
我知道什么是放心,它的用途是什么,cucumber也是如此。 但问题是我们可以用“放心”实现的,我们也可以用cucumber进行测试。 Rest保证只是调用Web服务并验证响应。我们不能在Maven构建期间使用Rest保证,因为该服务需要启动并运行。 但是使用Cucumber,我可以直接调用Web服务的业务服务层和DOA层并验证响应。cucumber可以在 Maven 构建时调用它。 所以问题是哪
我试图覆盖我的整个测试环境与Mockito.spy功能,所以每当我想我可以存根一个方法,但所有其他调用去默认功能。这在服务层运行得很好,但是我在存储库层有问题。 我的设置如下: Mockito-2.15.0 Spring-5.0.8 SpringBoot-2.0.4 存储库: 服务: spy的配置: 还有我的测试课: 现在,该测试有三种可能的结果: > aRepository是间谍(这就是我想要的
我有一个问题与存根我的存储库。有人建议我只创建另一个application.properties(我没有这样做),并使用像H2这样的内存数据库。不过,我想知道我是否可以只是存根调用,这样当调用MyDataService.FindById(id)而不是试图从数据库中获取它时,就可以返回一个模拟对象?