Я хочу издеваться над методом из класса - PullRequest
0 голосов
/ 21 апреля 2020

Я выполняю модульный тест для своего проекта и хочу смоделировать указанный метод c из SaveFileProcessor, потому что он используется в методе, который будет сохранять файл на файловом сервере. Я хочу, чтобы он возвращал значение true, потому что есть какое-то исключение. Вот метод, который я хочу издеваться:

public Boolean saveToFileServer(SmbFile file, byte[] data, SaveFileParams param)
      throws SmbException, MalformedURLException {

    if (!(validator.validateDirectory(file, new NtlmPasswordAuthentication(param.getDomain(),
        param.getUsername(), param.getPassword())))) {
      return false;
    }
    try (SmbFileOutputStream outputStream = new SmbFileOutputStream(file);) {

      outputStream.write(data);

      return true;
    } catch (IOException e) {

      return false;
    }
  }

Это тестовый класс

 @Tested
  private FileServerUtilityImpl service;

  @Injectable
  private Validator validator;

  @Injectable
  private FileNameGenerator fileNameGenerator;

  @Injectable
  private SmbFileGenerator smbFileGenerator;

  @Injectable
  private SaveFileProcessor saveFileProcessor;

  @Injectable
  private GetFileProcessor getFileProcessor;

Я хочу издеваться private SaveFileProcessor saveFileProcessor

  @Test
  public void given_ValidAllParams_When_SaveFile_Then_Return_Success() throws IOException {

    new MockUp<SaveFileProcessor>() {
      @Mock
      Boolean saveToFileServer(SmbFile smbFile, byte[] byt, SaveFileParams param) {
        return true;
      }
    };

    Response res = service.saveFile(param);
    assertEquals(StatusCodes.SUCCESS.getStatusCode(), res.getStatusCode());

  }

Но это дает я java.lang.IllegalArgumentException: Class already mocked: com.file.server.processor.SaveFileProcessor

...