### Question:
DingTalkNotifier extends AbstractNotifier<DingTalkMessageTemplate> { @Nonnull @Override public Mono<Void> send(@Nonnull DingTalkMessageTemplate template, @Nonnull Values context) { return getToken() .flatMap(token -> client.post() .uri(notify) .contentType(MediaType.APPLICATION_FORM_URLENCODED) .body(template.createFormInserter(BodyInserters.fromFormData("access_token", token),context)) .exchange() .flatMap(clientResponse -> clientResponse.bodyToMono(HashMap.class)) .as(this::checkResult)) .then(); } DingTalkNotifier(String id,WebClient client, DingTalkProperties properties, TemplateManager templateManager); @Nonnull @Override NotifyType getType(); @Nonnull @Override Provider getProvider(); @Nonnull @Override Mono<Void> send(@Nonnull DingTalkMessageTemplate template, @Nonnull Values context); @Nonnull @Override Mono<Void> close();  }### Answer:
@Test @Disabled void test(){ DingTalkProperties properties=new DingTalkProperties(); properties.setAppKey("appkey"); properties.setAppSecret("appSecuret"); DingTalkMessageTemplate messageTemplate=new DingTalkMessageTemplate(); messageTemplate.setAgentId("335474263"); messageTemplate.setMessage("test"+System.currentTimeMillis()); messageTemplate.setUserIdList("0458215455697857"); DingTalkNotifier notifier=new DingTalkNotifier("test", WebClient.builder().build(),properties,null ); notifier.send(messageTemplate, Values.of(new HashMap<>())) .as(StepVerifier::create) .expectComplete() .verify(); }