簡體   English   中英

如何使用 Mockito 模擬此方法

[英]How to mock this method using Mockito

我有這段代碼,我正在嘗試為其編寫單元測試,但我不確定從哪里開始。 這是我到目前為止所做的:

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() {
  // ...
}

我不確定要模擬什么或如何測試該方法。

在這種情況下,您提供使用模擬是沒有意義的,因為您沒有在內部使用任何其他服務/依賴項。 如果您的邏輯依賴於其他組件,則使用 mockito 是有意義的。

但無論如何,如果你想使用 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);
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM