Насмешка наборов данных с Moq

Похоже, у меня было две ошибки. Во-первых, как указывалось, мой цикл for был неверным и не зацикливался на количестве символов, как хотелось бы. Заменив «for (i в длине строки)» на «for (i в seq_len (длина строки))» исправил это.

Во-вторых, строка «files < - c (files, filename [i])» заставляет цикл добавлять новые записи в уже существующие NA, вместо того, чтобы просто указывать нужный вектор имен файлов. Замена с соответствующим индексированием с использованием «files [i] < - filename [i]» исправляет это.

mystring <- "ABcd"

# count number of characters
stringlength <- nchar(mystring)

# find filename for image corresponding to symbol
filepath <- "/Users/mypath"

# initialize vectors
filename <- rep("NA", stringlength)
files <- rep("NA", stringlength)
symbol <- rep("NA", stringlength)
prefix <- "NA"

# create filename prefix from letters in mystring - caps are single and lowercase are double
for (i in seq_len(stringlength)) 
{
  symbol[i] <- substring(mystring, i, i)
  if (symbol[i] %in% letters) {
    prefix <- paste(symbol[i], symbol[i], sep = "")
  } else {
    prefix <- symbol[i]
  }
  filename[i] <- paste(filepath, "/", prefix, ".txt", sep="")
files[i] <- filename[i]
}
files
1] "/Users/mypath/A.txt"  "/Users/mypath/B.txt"  "/Users/mypath/cc.txt" "/Users/mypath/dd.txt"
7
задан Adam 23 February 2009 в 19:52
поделиться

1 ответ

Вам не нужно соединение с базой данных для заполнения DataSet. Можно дразнить его как это:

IDataInterface di = new Mock<IDataInterface>();
DataSet mockDataSet = CreateMockDataSet();
di.Expect(x => x.Get()).Returns(mockDataSet);
something.UseDataInterface(di.Object);

Заполнение ложного DataSet является довольно болезненным, все же. Если я делаю это, я обычно помещал интерфейс фасада перед возвращенным DataSet, который легче дразнить. Или я изменяю код для использования DataTable, который легче заполнить.

С другой стороны, используйте встроенную базу данных, такую как SQLite или SQL Server CE, для Ваших модульных тестов.

7
ответ дан 7 December 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: