Как смоделировать этот метод с помощью Mockito - PullRequest
0 голосов
/ 02 марта 2020

У меня есть этот код, для которого я пытаюсь написать модульный тест, но я не уверен, с чего начать. Это то, что я сделал до сих пор:

public void statusChange()
  if (this.checked && !this.boxChecked) {
     this.setBoxChecked(true);
     this.setChecked(true);
  } else if (!this.checked && this.boxChecked) {
    this.setBoxChecked(false);
    this.setChecked(false);
  }
}

...

@Mock 
@Test
public void statusChange() {
  // ...
}

Я не уверен, что издеваться или как проверить метод.

1 Ответ

0 голосов
/ 02 марта 2020

В этом случае вы предоставили использование mocks, не имеет смысла, потому что вы не используете никаких других сервисов / зависимостей внутри. Использование mockito имеет смысл, если ваша логика c зависит от других компонентов.

Но в любом случае, если вы хотите использовать mockito, вы можете попробовать это:

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.assertj.core.api.SoftAssertions.assertSoftly;

@ExtendWith(MockitoExtension.class)
public class SomeClassMockitoTest {

  @InjectMocks
  SomeClass someClass;

  @Test
  void shouldTestSomething() {
    // given

    // when
    someClass.statusChange();

    // then
    assertSoftly(s -> {
      s.assertThat(someClass.isBoxChecked()).isFalse();
      s.assertThat(someClass.isChecked()).isFalse();
    });
  }

}

class SomeClass {

  private boolean checked;
  private boolean boxChecked;

  public boolean isChecked() {
    return checked;
  }

  public void setChecked(boolean checked) {
    this.checked = checked;
  }

  public boolean isBoxChecked() {
    return boxChecked;
  }

  public void setBoxChecked(boolean boxChecked) {
    this.boxChecked = boxChecked;
  }

  public void statusChange() {
    if (this.checked && !this.boxChecked) {
      this.setBoxChecked(true);
      this.setChecked(true);
    } else if (!this.checked && this.boxChecked) {
      this.setBoxChecked(false);
      this.setChecked(false);
    }
  }
}
...