Вы не должны издеваться над классами/объектами, которыми вы не являетесь. В этом случае, поскольку вы связываете метод (ы) с CellSet
, вы теперь напрямую зависите от него.
Большинство классов в пространстве имен Microsoft.AnalysisServices.AdomdClient
запечатаны и не содержат никаких публичных конструкторов, которые делают их очень трудными для фальсификации/подделки.
Просмотрите класс CellSet
и определите, какую функциональность вы хотите от него. Извлеките свойства/методы, которые вам нужны, и решите, что вы хотите абстрагироваться позади службы, которую вы можете контролировать.
Вот упрощенный пример того, что я только что объяснил.
public class MyClassUnderTest {
public DataTable ConvertCellSetToDataTable(ICellSetWrapper cellSet) {
if (cellSet == null) {
return null;
}
var dataTable = new DataTable();
SetColumns(cellSet, dataTable);
WriteValues(cellSet, dataTable);
return dataTable;
}
private void WriteValues(ICellSetWrapper cellSet, DataTable dataTable) {
//...assign value to datarows
}
private void SetColumns(ICellSetWrapper cellSet, DataTable dataTable) {
//...read data from this CellSet and build data columns
}
}
public interface ICellSetWrapper {
//...Methods and propeties exposing what you want to use
}
public class MyCellSetWrapper : ICellSetWrapper {
CellSet cellSet;
public MyCellSetWrapper(CellSet cellSet) {
this.cellSet = cellSet;
}
//...Implemented methods/properties
}
Затем вы можете искусить необходимую функциональность, чтобы протестировать свой метод с помощью рамки тестирования по вашему выбору.
Покажите свой метод, который вы хотите выполнить модульный тест. – Yogi
@Yogi Обновлено. Я не использовал метод SetColumns или WriteValues, потому что я думаю, что это слишком подробно для этого вопроса. В основном они считывают данные из этого набора CellSet и строят столбцы данных и присваивают значение datarows ... – lastr2d2
Можете ли вы показать методы «SetColumns» и «WriteValues». Вам нужно посмотреть, какие свойства/методы «CellSet» они используют. Затем я могу показать вам, что нужно абстрагироваться, чтобы вы не были напрямую связаны с классом «CellSet». Большинство классов в пространстве имен Microsoft.AnalysisServices.AdomdClient запечатаны и не содержат никаких публичных конструкторов, которые делают их очень сложными для фальсификации/фальсификации. – Nkosi