пытаюсь имитировать статический метод с помощью Mockito,
я пытаюсь имитировать метод:
CloudFrontUrlSigner.getSignedURLWithCannedPolicy
https://docs.aws.amazon.com/AWSJavaSDK /latest/javadoc/com/amazonaws/services/cloudfront/CloudFrontUrlSigner.html
При запуске теста он неоднократно не может имитировать и входит в метод, выдавая исключение,
Нет конечно, где я ошибаюсь, чтобы обеспечить правильное совпадение предложения if,
буду очень благодарен за любую помощь.
Смоделировал сокращенную версию сервиса:
package com.example.demo.service;
import com.amazonaws.services.cloudfront.CloudFrontUrlSigner;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.net.URL;
import java.security.PrivateKey;
@Service
public class CloudFrontSigningService {
// defined this way for simplicity
PrivateKey privateKey = new PrivateKey() {
@Override
public String getAlgorithm() {
return null;
}
@Override
public String getFormat() {
return null;
}
@Override
public byte[] getEncoded() {
return new byte[0];
}
};
public CloudFrontSigningService() {
}
public URL generateSignedURL(String pathToSign){
// String here for simplicity instead of Request with path, expirationSeconds etc
try {
Integer expirationSeconds = 20; // would be gotten from request passed in
String cloudFrontKeyPairId = "myKeyPairID";
String signedURL = CloudFrontUrlSigner.getSignedURLWithCannedPolicy(
pathToSign,
cloudFrontKeyPairId,
privateKey,
new DateTime(DateTimeZone.UTC).plusSeconds(expirationSeconds).toDate()
);
return new URL(signedURL);
} catch (IOException ex){
System.out.println("error generating signedURL : " + ex);
throw new Error("my error");
}
}
}
Мои попытки протестировать метод на данный момент
package com.example.demo.service;
import com.amazonaws.services.cloudfront.CloudFrontUrlSigner;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.junit.Assert;
import java.io.IOException;
import java.net.URL;
import java.security.PrivateKey;
import java.util.Date;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.mock;
class CloudFrontSigningServiceTest {
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
CloudFrontUrlSigner cloudFrontUrlSigner = mock(CloudFrontUrlSigner.class);
// inject some other mocks (removed for this example)
@InjectMocks
CloudFrontSigningService cloudFrontSigningService;
@Test
void testGenerateSignedURL_attempt1() {
String pathToSign = "s3://my-bucket-name/path/to/object.jpg";
Mockito.when(cloudFrontUrlSigner.getSignedURLWithCannedPolicy(
any(String.class),
any(String.class),
any(PrivateKey.class),
any(Date.class)
)
).thenReturn("http://example.cloudfront.net/path/to/object.jpg");
URL signedUrl = cloudFrontSigningService.generateSignedURL(pathToSign);
Assert.assertNotNull(signedUrl);
}
@Test
void testGenerateSignedURL_attempt2() throws IOException {
// Arrange
String pathToSign = "/some/path";
String cloudFrontKeyPairId = "myKeyPairID";
byte[] privateKey = "private_key_bytes".getBytes();
CloudFrontSigningService service = new CloudFrontSigningService();
CloudFrontUrlSigner signerMock = Mockito.spy(CloudFrontUrlSigner.class);
when(signerMock.getSignedURLWithCannedPolicy(
Mockito.eq(pathToSign),
Mockito.eq(cloudFrontKeyPairId),
Mockito.any(),
Mockito.any()
)).thenReturn("https://signed-url.example.com");
// Act
URL signedURL = service.generateSignedURL(pathToSign);
// Assert
assertNotNull(signedURL);
Mockito.verify(signerMock).getSignedURLWithCannedPolicy(
Mockito.eq(pathToSign),
Mockito.eq(cloudFrontKeyPairId),
Mockito.any(),
Mockito.any()
);
}
}
Зависимости, которые я использую
com.amazonaws
aws-java-sdk-cloudfront
1.12.649
junit
junit
test
org.mockito
mockito-core
test
5.11.0
org.mockito
mockito-inline
test
5.2.0
Подробнее здесь: https://stackoverflow.com/questions/784 ... th-mockito
Издевательский статический метод в классе Enum с помощью Mockito ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1716041471
Anonymous
пытаюсь имитировать статический метод с помощью Mockito,
я пытаюсь имитировать метод:
CloudFrontUrlSigner.getSignedURLWithCannedPolicy
https://docs.aws.amazon.com/AWSJavaSDK /latest/javadoc/com/amazonaws/services/cloudfront/CloudFrontUrlSigner.html
При запуске теста он неоднократно не может имитировать и входит в метод, выдавая исключение,
Нет конечно, где я ошибаюсь, чтобы обеспечить правильное совпадение предложения if,
буду очень благодарен за любую помощь.
Смоделировал сокращенную версию сервиса:
package com.example.demo.service;
import com.amazonaws.services.cloudfront.CloudFrontUrlSigner;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.net.URL;
import java.security.PrivateKey;
@Service
public class CloudFrontSigningService {
// defined this way for simplicity
PrivateKey privateKey = new PrivateKey() {
@Override
public String getAlgorithm() {
return null;
}
@Override
public String getFormat() {
return null;
}
@Override
public byte[] getEncoded() {
return new byte[0];
}
};
public CloudFrontSigningService() {
}
public URL generateSignedURL(String pathToSign){
// String here for simplicity instead of Request with path, expirationSeconds etc
try {
Integer expirationSeconds = 20; // would be gotten from request passed in
String cloudFrontKeyPairId = "myKeyPairID";
String signedURL = CloudFrontUrlSigner.getSignedURLWithCannedPolicy(
pathToSign,
cloudFrontKeyPairId,
privateKey,
new DateTime(DateTimeZone.UTC).plusSeconds(expirationSeconds).toDate()
);
return new URL(signedURL);
} catch (IOException ex){
System.out.println("error generating signedURL : " + ex);
throw new Error("my error");
}
}
}
Мои попытки протестировать метод на данный момент
package com.example.demo.service;
import com.amazonaws.services.cloudfront.CloudFrontUrlSigner;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.junit.Assert;
import java.io.IOException;
import java.net.URL;
import java.security.PrivateKey;
import java.util.Date;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.mock;
class CloudFrontSigningServiceTest {
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
CloudFrontUrlSigner cloudFrontUrlSigner = mock(CloudFrontUrlSigner.class);
// inject some other mocks (removed for this example)
@InjectMocks
CloudFrontSigningService cloudFrontSigningService;
@Test
void testGenerateSignedURL_attempt1() {
String pathToSign = "s3://my-bucket-name/path/to/object.jpg";
Mockito.when(cloudFrontUrlSigner.getSignedURLWithCannedPolicy(
any(String.class),
any(String.class),
any(PrivateKey.class),
any(Date.class)
)
).thenReturn("http://example.cloudfront.net/path/to/object.jpg");
URL signedUrl = cloudFrontSigningService.generateSignedURL(pathToSign);
Assert.assertNotNull(signedUrl);
}
@Test
void testGenerateSignedURL_attempt2() throws IOException {
// Arrange
String pathToSign = "/some/path";
String cloudFrontKeyPairId = "myKeyPairID";
byte[] privateKey = "private_key_bytes".getBytes();
CloudFrontSigningService service = new CloudFrontSigningService();
CloudFrontUrlSigner signerMock = Mockito.spy(CloudFrontUrlSigner.class);
when(signerMock.getSignedURLWithCannedPolicy(
Mockito.eq(pathToSign),
Mockito.eq(cloudFrontKeyPairId),
Mockito.any(),
Mockito.any()
)).thenReturn("https://signed-url.example.com");
// Act
URL signedURL = service.generateSignedURL(pathToSign);
// Assert
assertNotNull(signedURL);
Mockito.verify(signerMock).getSignedURLWithCannedPolicy(
Mockito.eq(pathToSign),
Mockito.eq(cloudFrontKeyPairId),
Mockito.any(),
Mockito.any()
);
}
}
Зависимости, которые я использую
com.amazonaws
aws-java-sdk-cloudfront
1.12.649
junit
junit
test
org.mockito
mockito-core
test
5.11.0
org.mockito
mockito-inline
test
5.2.0
Подробнее здесь: [url]https://stackoverflow.com/questions/78499990/mocking-static-method-in-enum-class-with-mockito[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия