Или это:
ex.list <- lapply(split(ex, ex$order), function(x){
ex.x <- as.data.frame(do.call(rbind,
lapply(1:nrow(x), function(i){
c(x$order[i], ifelse(i==1, list(data.frame()), list(x[1:(i-1), ])), list(x[i:nrow(x), ]))
})
))
names(ex.x) <- c('order', 'data_before', 'data_after')
ex.x
})
У Вас может быть класс (классы) Разработчика, который помогает Вам создающий экземпляры, в которых Вы нуждаетесь / в этом случае, которые Вы использовали бы связанный с репозиторием. Сделайте, чтобы Разработчик использовал appropiate значения по умолчанию, и на Ваших тестах можно перезаписать то, в чем Вы нуждаетесь. Это помогает, у Вас постараться не должными быть поместить есть каждый случай "данных", перепутанных для всех различных тестов (который представляет проблемы, потому что обычно существуют случаи, которые не совместимы для различных тестов).
** Обновление 1: ** Смотрите на www.markhneedham.com/blog/2009/01/21/c-builder-pattern-still-useful-for-test-data
Я знаю точно, что Вы имеете в виду. Я думаю, что хороший подход к решению этой проблемы должен на самом деле иметь отдельный проект MockFramework, который содержит все Ваши ложные данные вне тестового проекта. Таким образом, можно генерировать ложные данные отдельно, сохранить их в памяти, если Вы хотите, или нет, и затем сослаться на ложную платформу от тестового проекта. Если Вы используете стороннюю платформу, чтобы сделать это, тем лучше, но можно все еще перенести ту стороннюю платформу в собственную ложную платформу, таким образом, можно получить все это "связующее звено", которое создает ложные данные путем, Вам нужен он из Ваших тестов, таким образом, тесты могут действительно быть только, каковы они должны быть.
Если Ваш используют.Net Try NDBUnit
Вы заполняете свое хранилище, и затем оно возвращается Ваш DB к известному состоянию в тестовое время для каждого теста. Экран Autumn of Agile бросил серийные шоу это в довольно хороших деталях.
Или можно сделать, это вручную... создает хранимую процедуру или безотносительно усекать таблицы и копию в данных в методе разрушения.
Спасибо за все предложения я думаю, что решение требует всего понемногу. Я не хочу, чтобы эти тесты закончили тем, что были регрессионными тестами, но w/o некоторое существующее хранилище данных, которое все все еще сводит к созданию данных, "вручную" создавая объекты.
То, что действительно было бы хорошо, будет платформой, которая позволила мне использовать свой существующий DAL для или сценариев данных, чтобы кодировать для меня или получить данные в памяти и получить доступ к нему как в базе данных памяти.
Untils.org касается этого пути лучше, чем я когда-нибудь мог.
Их целое руководство на самом деле очень хорошо.
Но в основном, если Ваши единицы требуют "большого количества данных", они не могут больше быть модульными тестами. Я рекомендовал бы делать попытку тестирования мелких кусочков индивидуально.