Как я могу вручную / программно создать DataRow?
База кода моего проекта имеет устаревший метод, который принимает DataRow в качестве параметра, для которого я хотел бы создать метод модульного тестирования.
Как я могу вручную создать объект DataRow для передачи в метод? System.Data.DataRow
У класса нет открытого конструктора.
2 ответа
Решение
DataRow можно создать, создав новый экземпляр DataTable, добавив столбцы в DataTable, соответствующие "ключам", которые должны иметь DataRow, и затем вызвав NewRow()
на DataTable. Например:
DataTable usersTable = new DataTable();
usersTable.Columns.Add("FirstName");
usersTable.Columns.Add("LastName");
usersTable.Columns.Add("Email");
DataRow userRow = usersTable.NewRow();
userRow["FirstName"] = "Elmer";
userRow["LastName"] = "Example";
userRow["Email"] = "elmer@example.com";
Следует отметить, что если модульному тесту необходимо было применить ограничения типа на DataColumnCollection
(Столбцы) для DataTable
- вы можете использовать перегруженный конструктор DataColumn
класс, чтобы включить ожидаемый Type
,
var dt = new DataTable();
var dc = new DataColumn("Age", typeof(int));
dt.Columns.Add(dc);
var dr = dt.NewRow();
dr["Age"] = "test"; // throws an ArgumentException
//Input string was not in a correct format. Couldn't store<test> in Age Column. Expected type is Int32.