Используйте Rhino Mocks для создания базы данных в памяти для использования при разработке кода и пользовательского интерфейса - PullRequest
2 голосов
/ 09 января 2010

Я боролся с этим все утро, и, возможно, я полностью на неправильном пути, так как Rhino Mocks изначально был разработан для модульного тестирования.

Тем не менее, у меня есть несколько повторно используемых бэкэнд-компонентов, которые обрабатывают функции аутентификации и ведения блога как веб-сайт, каждый из которых имеет свой собственный уровень доступа к данным. При разработке пользовательского интерфейса я действительно не хочу возиться с созданием тестовых данных в базе данных и / или XML-файле.

То, к чему я стремлюсь, - это реализация моих интерфейсов доступа к данным (IBlogRepository), например, для запуска в качестве синглтонов в течение всего жизненного цикла сеанса отладки (или базы данных в памяти), чтобы я мог отображать некоторые данные для дизайн против.

Надеюсь, это имеет смысл! Все комментарии с благодарностью.

Jason

Ответы [ 2 ]

3 голосов
/ 09 января 2010

Не используйте макет, на самом деле создайте тестовую реализацию вашего интерфейса IBlogRepository, который возвращает жестко закодированные фиктивные данные.

2 голосов
/ 09 января 2010

Синглтоны расходятся с тестируемостью, потому что их так сложно изменить. Было бы гораздо лучше использовать Внедрение зависимостей для внедрения экземпляра IBlogRepository в ваши потребляющие классы:

public class MyClass
{
    private readonly IBlogRepository repository;

    public MyClass(IBlogRepository repository)
    {
        if(repository == null)
        {
            throw new ArgumentNullException("repository");
        }

        this.repository = repository;
    }

    // use this.repository in other members
}

Обратите внимание, что Guard Claus вместе с ключевым словом readonly гарантирует, что экземпляр IBlogRepository будет всегда доступен.

Это позволит вам использовать Rhino Mocks или другую динамическую библиотеку для имитации Test Doubles IBlogRepository в потребляющие классы.

...