2008-10-01 4 views

Répondre

11

Je suis curieux de savoir pourquoi vous avez besoin de se moquer du DataRow. Parfois, vous pouvez vous faire prendre en train de vous moquer et d'oublier qu'il peut être tout aussi prudent d'utiliser la réalité. Si vous passez des lignes de données, vous pouvez simplement en instancier une avec une méthode d'assistance et l'utiliser comme valeur de retour sur votre maquette.

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; 
} 

Si cela est la situation que vous êtes alors je vais avoir besoin d'un exemple de code pour être en mesure de comprendre ce que vous essayez de faire.

+0

C'est pour un ORM (maladroit) que j'ai écrit que je teste qu'un Dao interroge mon objet DBWrapper pour obtenir un DataRow et en construire l'objet. Bien qu'il serait plus opportun d'utiliser un simulacre, je suppose que quelque chose comme ça devra faire. –

+0

Oui, c'est difficile. Normalement, je dirais simplement d'éviter d'utiliser un type concret et de me fier à une interface, mais ce que vous essayez d'accomplir ne serait pas adapté à cela. – Josh

0

Chaque fois que je ne peux pas me moquer de quelque chose (je préfère MoQ sur Rhino, mais c'est à côté du point) je dois coder autour de lui. Comme je le vois, vous n'avez que deux choix. Payer pour un cadre supérieur tel que TypeMock qui peut se moquer de n'importe quelle classe, ou coder un wrapper autour de classes qui n'ont pas été écrites pour être raillées.

C'est un triste état de fait dans le cadre. TDD n'était pas une grande préoccupation dans les 1,1 jours.

1

J'utilise également Typemock Isolateur pour cela, il peut se moquer des choses que d'autres cadres moqueurs sont incapables de faire.

Questions connexes