Mockito показывает 0 взаимодействий с mock - PullRequest
0 голосов
/ 15 декабря 2018

Вот мой код:

public class S3Dao {

    private final AmazonS3Client amazonS3Client;

    static final String BUCKET_NAME = "myBucket";

    public S3Dao(final AmazonS3Client amazonS3Client) {
        this.amazonS3Client = amazonS3Client;
    }

    public void put(ModelObject modelObject, String playlistId) {
        this.amazonS3Client.putObject(BUCKET_NAME, playlistId, new Gson().toJson(modelObject));
    }
}

И мой тестовый код:

@ExtendWith(MockitoExtension.class)
public class S3DaoTest {

    private S3Dao s3Dao;

    @Mock
    private AmazonS3Client s3Client;

    @BeforeEach
    public void beforeEach() {
        this.s3Dao = new S3Dao(this.s3Client);
    }

    @Test
    public void putTest() {
        ModelObject obj = new ModelObject("name", new ArrayList<>());
        String json = new Gson().toJson(obj);
        verify(s3Client).putObject(S3Dao.BUCKET_NAME, "playlistId", json);

        this.s3Dao.put(obj, "playlistId");
    }

}

В результате получается ошибка

Wanted but not invoked:
s3Client.putObject(
    "myBucket",
    "playlistId",
    "{"name":"name","children":[]}"
);
-> at com.amazon.amazon.live.destination.playlist.dao.S3DaoTest.putTest(S3DaoTest.java:34)
Actually, there were zero interactions with this mock.

Действительно, устранение причин проверкиТест пройти без проблем.Почему это не работает?

1 Ответ

0 голосов
/ 15 декабря 2018

Переместить подтверждение после вызова метода

@Test
public void putTest() {
    ModelObject obj = new ModelObject("name", new ArrayList<>());
    String json = new Gson().toJson(obj);
    this.s3Dao.put(obj, "playlistId");

    verify(s3Client).putObject(S3Dao.BUCKET_NAME, "playlistId", json);
}
...