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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top