Как сделать модульные тесты для «GenericDAO» с помощью методов AWS-DynamoDB - PullRequest
0 голосов
/ 11 февраля 2019

Мы создаем класс, который можно использовать для выполнения транзакций 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...