### Question:
ManagementClient { public Mono<Void> start(BackingApplication backingApplication) { return Mono.justOrEmpty(backingApplication) .flatMap(backingApp -> appManager.start(StartApplicationRequest.builder() .name(backingApp.getName()) .properties(backingApp.getProperties()) .build()) .doOnRequest(l -> { LOG.info("Starting application. backingAppName={}", backingApp.getName()); LOG.debug(BACKINGAPP_LOG_TEMPLATE, backingApp); }) .doOnSuccess(response -> { LOG.info("Success starting application. backingAppName={}", backingApp.getName()); LOG.debug(BACKINGAPP_LOG_TEMPLATE, backingApp); }) .doOnError(e -> { LOG.error(String.format("Error starting application. backingAppName=%s, error=%s", backingApp.getName(), e.getMessage()), e); LOG.debug(BACKINGAPP_LOG_TEMPLATE, backingApp); })); } ManagementClient(AppManager appManager); Mono<Void> start(BackingApplication backingApplication); Mono<Void> stop(BackingApplication backingApplication); Mono<Void> restart(BackingApplication backingApplication); Mono<Void> restage(BackingApplication backingApplication);  }### Answer:
@Test void startApplication() { given(appManager.start(any(StartApplicationRequest.class))) .willReturn(Mono.empty()); StepVerifier.create(managementClient.start(backingApplication)) .verifyComplete(); verify(appManager).start(argThat(request -> "foo-app".equals(request.getName()) && Collections.singletonMap("foo", "bar").equals(request.getProperties()))); verifyNoMoreInteractions(appManager); }
@Test void startNullApplication() { StepVerifier.create(managementClient.start(null)) .verifyComplete(); verifyNoInteractions(appManager); }