2009-05-31 7 views
16

diesen Code ausführen:Mocking eine Methode, die eine versiegelte Klasse in RhinoMocks gibt

_foo = MockRepository.GenerateStub<IBar>(); 
_foo.Stub(x => x.Foo()).Return("sdf"); 

Wenn

public interface IBar 
{ 
    string Foo(); 
} 

public class Bar : IBar 
{ 
    public string Foo() 
    { 
     throw new NotImplementedException(); 
    } 
} 

NotSupportedException wirft - "Kann nicht verspottet von versiegelten Klassen erstellen". Ich verstehe, warum Sie eine versiegelte Klasse nicht vortäuschen können (obwohl es in TypeMock Lösungen gibt), aber was ist das Problem mit dem Mocking einer Klasse, die eine versiegelte Klasse (String) zurückgibt?

+0

Dies sollte wie ich oft Mock-Schnittstellen arbeiten, die Methoden, die Zeichenfolgen zurückgeben. Ich vermute, dass du ein anderes Problem hast. Können wir mehr Code sehen? – tvanfosson

+0

Es funktioniert für mich jetzt, nicht sicher, was das Problem war. – ripper234

+2

Ich habe das gleiche Problem, wenn ich versuche zu debuggen. Das Ausführen ohne Debug funktioniert einwandfrei. –

Antwort

23

Rhino Mocks scheint diese Ausnahme zu erfassen und zu verarbeiten. Sie sehen es nur im VS.NET-Debugger, wenn Sie Ausnahmen als Haltepunkte aktiviert haben. Es sieht so aus, als könnten Sie diesen Ausnahme-Breakpoint sicher weiter ausführen und alles funktioniert wie erwartet.

+0

schlagen 'weiter' macht den Trick! – DanielV

1

Ihr Code funktioniert ordnungsgemäß. Sie haben wahrscheinlich einen anderen Code, der nicht angezeigt wird, der das Problem verursacht. Veröffentlichen Sie hier Ihren gesamten Komponententest und wir werden das Problem für Sie diagnostizieren.

1

Ich habe das gleiche Problem, es muss einige VS Studio-Debug-Einstellung oder einige unzureichende Zugriffsrechte für Rhino Mocks ich denke. Ich bin mir ziemlich sicher, dass es nicht der Code ist, der das verursacht.

2

Dies passiert, wenn Sie NICHT "Nur mein Code" unter Extras-> Optionen-> Debugging-> Allgemein aktiviert haben, und Sie haben CLR-Ausnahmen, "Geworfen" unter Debuggen-> Ausnahmen ausgewählt. Der einfachste Weg dies zu beheben ist "nur mein Code" unter Extras-> Optionen-> Debugging-> Allgemein.

enter image description here

0

ich zweitens, dass - es ist nicht ein Problem mit dem Code. Es ist VS Debug Einstellung.

Ich bekomme die gleiche Ausnahme beim Debuggen auf den Code unten, während Sie versuchen, Arg.Is.Anything als Parameter zu einem Stub zu senden.

mockPermissionManager.Stub(item => item.HasAccess(Arg<string>.Is.Anything)).Return(true); 

Die Ausnahme behandelt wird und Code/spöttischen funktioniert wie erwartet, nur F5 tun

Verwandte Themen