Мы создаем класс, который можно использовать для выполнения транзакций AWS DynamodB.Класс удовлетворяет спрос на транзакции и может использоваться несколькими точками проекта.Однако это становится трудным для тестирования классом.Кто-нибудь делал подобные модульные тесты или мы могли бы помочь написать модульный тест для методов в этом классе?
import javax.annotation.PostConstruct;
import org.springframework.stereotype.Component;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBQueryExpression;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBScanExpression;
import com.amazonaws.services.dynamodbv2.datamodeling.PaginatedQueryList;
import com.amazonaws.services.dynamodbv2.datamodeling.PaginatedScanList;
@Component
public class AwsDynamoServiceImpl implements AwsDynamoService {
private DynamoDBMapper dbMapper;
private AmazonDynamoDB client;
@PostConstruct
private void init() {
client = AmazonDynamoDBClientBuilder.standard().build();
}
@Override
public <T> void save(String tableName, T t) {
dbMapper = getMapper(tableName);
dbMapper.save(t);
}
@Override
public <T> PaginatedQueryList<T> getFromQuery(String tableName, Class<T> clazz,
DynamoDBQueryExpression<T> queryExpression) {
dbMapper = getMapper(tableName);
return dbMapper.query(clazz, queryExpression);
}
@Override
public <T> PaginatedScanList<T> scanFromQuery(String tableName, Class<T> clazz,
DynamoDBScanExpression scanExpression) {
dbMapper = getMapper(tableName);
return dbMapper.scan(clazz, scanExpression);
}
@Override
public void delete(String tableName, Object object) {
dbMapper = getMapper(tableName);
dbMapper.delete(object);
}
private DynamoDBMapper getMapper(String tableName) {
DynamoDBMapperConfig config = DynamoDBMapperConfig.builder()
.withTableNameOverride(new DynamoDBMapperConfig.TableNameOverride(tableName)).build();
dbMapper = new DynamoDBMapper(client, config);
return dbMapper;
}
}