Java 使用RestAssuredMockMvc for Spring云契约的模拟静态方法
我一直试图在生产者端模拟一个静态方法来生成和运行针对控制器的契约,但是测试是针对实际方法运行的 这是producer上的控制器,其中“getId”是类中的静态方法Java 使用RestAssuredMockMvc for Spring云契约的模拟静态方法,java,junit5,rest-assured,mockmvc,spring-cloud-contract,Java,Junit5,Rest Assured,Mockmvc,Spring Cloud Contract,我一直试图在生产者端模拟一个静态方法来生成和运行针对控制器的契约,但是测试是针对实际方法运行的 这是producer上的控制器,其中“getId”是类中的静态方法 @PostMapping(path = "/getone", consumes = "application/json", produces = "application/json") public ResponseEntity<Response> getone
@PostMapping(path = "/getone", consumes = "application/json", produces = "application/json")
public ResponseEntity<Response> getone(@RequestBody Test[] test) {
String appId = Utils.getId();
return new ResponseEntity<>(service.pub(test,id), HttpStatus.OK);
}
我也尝试过使用独立设置,但没有成功
@Autowired
private ApiController controller;
@BeforeEach
void setup() {
try (MockedStatic mocked = mockStatic(Utils.class)) {
mocked.when(() -> Utils.getId()).thenReturn("194");
StandaloneMockMvcBuilder standaloneMockMvcBuilder = MockMvcBuilders.standaloneSetup(controller);
RestAssuredMockMvc.standaloneSetup(standaloneMockMvcBuilder);}
测试是针对实际类而不是模拟值运行的。有没有办法模拟静态方法getId()并生成测试?能否尝试替换这一行:
try (MockedStatic mocked = mockStatic(Utils.class)) {
到
try(MockedStatic mocked=mockStatic(Utils.class)){
Hey@Stephen,谢谢你的回复,但没有work@sn879你能从你的测试类中删除@Mock private Utils Utils;
这一行以及上面的更改吗?我认为这是一个未使用的依赖项,我刚刚复制了它,但我尝试删除它并重新运行测试,它调用的是实际的方法,而不是Mock
try (MockedStatic mocked = mockStatic(Utils.class)) {
try (MockedStatic<Utils> mocked = mockStatic(Utils.class)) {