Rhino Mock: come deridere il DataRow di ADO.NET?
-
03-07-2019 - |
Domanda
ADO.NET ha la famigerata classe DataRow che non è possibile creare un'istanza usando new. Questo è un problema ora che trovo la necessità di deriderlo usando Rhino Mocks.
Qualcuno ha qualche idea su come potrei aggirare questo problema?
Soluzione
Sono curioso di sapere perché devi deridere DataRow. A volte puoi lasciarti sorprendere facendo beffe e dimenticare che può essere altrettanto prudente usare la cosa reale. Se stai passando intorno a righe di dati, puoi semplicemente istanziarne una con un metodo di supporto e usarlo come valore di ritorno sul tuo mock.
SetupResult.For(someMockClass.GetDataRow(input)).Return(GetReturnRow());
public DataRow GetReturnRow()
{
DataTable table = new DataTable("FakeTable");
DataRow row = table.NewRow();
row.value1 = "someValue";
row.value2 = 234;
return row;
}
Se questa non è la situazione in cui ti trovi, allora avrò bisogno di un codice di esempio per essere in grado di capire cosa stai cercando di fare.
Altri suggerimenti
Uso anche Typemock Isolator per questo, può deridere cose che altri framework di derisione non sono in grado di.
Ogni volta che non riesco a deridere qualcosa (preferisco MoQ rispetto a Rhino, ma non è questo il punto) devo codificarlo.
Per come la vedo io hai solo due scelte. Paga per un framework superiore come TypeMock che può deridere QUALSIASI classe o codificare un wrapper per le classi che non sono state scritte per essere derise.
È un triste stato di cose nel quadro. TDD non era una grande preoccupazione negli ultimi 1.1 giorni.