Per il test dell'unità, sto utilizzando NUnit 2.6 e Moq 4.0. C'è un caso particolare relativo ai membri virtuali in cui gli oggetti proxy di Moq non inviano chiamate di metodo all'attuazione effettiva (probabilmente in base alla progettazione). Per esempio, se ho avuto una classe ...Mocking di membri virtuali in Moq
public class MyClass {
protected virtual void A() {
/* ... */
}
protected virtual void B(...) {
/* ... */
}
}
... e io uso Moq di ignorare GetSomethingElse
s' A()
metodo nel mio dispositivo di prova ...
var mock = new Mock<MyClass>();
mock.Protected().Setup("A").Callback(SomeSortOfCallback);
... utilizzando il metodo di simulazione A
funziona splendidamente; tuttavia, se qualcosa in detto metodo chiamerebbe il metodo non deriso B
, il metodo non eseguirà nulla e/o restituirà valori predefiniti, anche se esiste un'implementazione effettiva in MyClass
.
C'è un modo per aggirare questo problema? Sto usando Moq sbagliato?
Grazie in anticipo,
Manny
e se si desidera ancora prendere in giro altri metodi? –
@LouisRhys Abbastanza sicuro che questo non interferisca con esso - se si prende in giro in modo esplicito qualcosa l'impostazione di 'CallBase' non entra mai in gioco. –