Hat jemand eine Implementierung eines Auto-Mock-Containers mit Rhino Mocks und NInject?Auto-Mock-Container: Rhino Mocks und NInject
Antwort
OK Ich baute einen selbst mit der Moq-Integration als Ausgangspunkt. Es ist sehr einfach. Sie müssen diese drei Klassen:
public class AutoMockingKernel : StandardKernel
{
private readonly IMockProvider _mockProvider;
public void Reset()
{
Components.Get<ICache>().Clear();
}
protected override bool HandleMissingBinding(Type service)
{
var isSelfBindable = TypeIsSelfBindable(service);
var binding = new Binding(service)
{
ProviderCallback = isSelfBindable
? StandardProvider.GetCreationCallback(service)
: _mockProvider.GetCreationCallback(),
IsImplicit = true
};
if (!isSelfBindable)
binding.ScopeCallback = ctx => null;
AddBinding(binding);
return true;
}
public AutoMockingKernel(IMockProvider mockProvider, INinjectSettings settings, params INinjectModule[] modules)
: base(settings, modules)
{
_mockProvider = mockProvider;
}
public AutoMockingKernel(IMockProvider mockProvider, params INinjectModule[] modules)
: base(modules)
{
_mockProvider = mockProvider;
}
}
internal class RhinoMockProvider : IProvider
{
public Type Type { get; private set; }
/// <summary>
/// Initializes a new instance of the <see cref="RhinoMockProvider"/> class.
/// </summary>
public RhinoMockProvider(Type type)
{
Type = type;
}
public object Create(IContext context)
{
return MockRepository.GenerateMock(Type, Type.EmptyTypes);
}
}
public class RhinoAutoMockProvider : IMockProvider
{
public Func<IContext, IProvider> GetCreationCallback()
{
return ctx => new RhinoMockProvider(ctx.Request.Service);
}
}
Sie können dann eine Auto-spöttischen Kernel in Ihrem Unit-Test wie folgt erstellen:
[Test]
public void Test()
{
var kernel = new AutoMockingKernel(new RhinoAutoMockProvider());
... etc
}
Wie verwalten Sie das Auslösen von Reset in [Teardown]? –
Ich benutze eine Basisklasse für alle meine Testgeräte, die Reset während des Teardowns aufrufen. Ich benutze auch einen statischen Kernel-Container. Definitiv nicht ideal, aber ich finde diese Art von Sachen nie ist. – cbp
Es gibt eine RhinoMocks integration extension available.
- 1. Rhino Commons und Rhino Mocks Referenzdokumente?
- 2. Rhino Mocks & Compact Framework
- 3. AssertWasCalled in Rhino Mocks
- 4. Rhino Mocks Partial Mock
- 5. Rhino Mocks Record Wiedergabesyntax
- 6. Rhino Mocks: Mocking HttpRequestBase.Files
- 7. Rhino Mocks, VerifyAllExpections
- 8. Rhino Mocks mit Singleton
- 9. Rhino Mocks Stubs und Mocks sind nur gut für Schnittstellen?
- 10. Rhino Mocks AAA-Syntax und Thread-Sicherheit
- 11. Mischen von Stubs und Mocks in Rhino
- 12. Unittesting Url.Action (mit Rhino Mocks?)
- 13. Mocking HttpPostedFileBase mit Rhino Mocks
- 14. Rhino Mocks Ref Param Einschränkung
- 15. Rhino-Mocks - gute Beispiel-Apps
- 16. Rhino Mocks: Repeat.Once() funktioniert nicht?
- 17. Teilargument Übereinstimmung in Rhino Mocks
- 18. Rhino Mocks - Brauchen wir wirklich Stubs?
- 19. Rhino Mocks Calling statt Aufnahme in NUnit
- 20. Rhino Mocks - Privat Eigenschaften An Ctor-Test
- 21. Rhino Mocks Stub gibt nur Null
- 22. Rhino Mocks: Mocked-Methode gibt null zurück
- 23. Rhino Mocks für ASMX Web-Dienste
- 24. Stubbing eine schreibgeschützte Eigenschaft mit Rhino Mocks
- 25. ASP.Net MVC - Rhino Mocks - Erwartete Methodenaufrufparameter
- 26. NMocks2 Argument Syntax in Rhino Mocks?
- 27. Rhino Mocks ruft echte Methode in Vereinbaren
- 28. Rhino Mocks Überschreiben von Stubs möglich?
- 29. Erklärung für ternären Operator in Rhino Mocks?
- 30. Rhino Mocks und Objekte erstellt in Verwendung von Anweisungen
ich es sollte alles klar, und dass sein wissen, aber ... Welche Funktionen suchen Sie ? Noch mehr Kontext, den Sie teilen können? –