Wie teste ich ServiceStack?

Ich liebe SS, aber ich kratzte mir am Kopf, um meine Business-Schicht zu testen. Ich bin neu im Unit-Testen und Verspotten und habe auf NSubstitute nachgelesen, da dies wie eine lustige Verspottungsebene aussieht.

Ich habe meine Dateistruktur ungefähr so:

MainAppHostProject*
|
 -AppStart
    -AppHost  <-- standard apphost

DtoProject*
|
 -HelloWorldDto  <-- simple POCO to 


ServiceLayerProject*
|
 -HelloWorldService  <-- service interface that merely passes/sends Dtos to/from business layer


BusinessLayerProject*
|
 -HelloWorldManager <-- logic to construct response and this class extends 'Service' (letting me access Db, session, etc)...sidenote: maybe i shouldve called this a HelloWorldRepository?
 -CustomAuthProvider
 -CustomUserSession


DaoProject*
|
 -HelloWorldDao  <-- POCO of table structure

Der Apphost verweist auf die HelloWorldService-Assembly und registriert die SQL Server-Datenbank als Standard.

Eigentlich funktioniert alles wunderbar und ich konnte die Logik sauberer aufbauen. Leider möchte ich mit Unit-Tests beginnen, aber ich weiß nicht, wie ich die Datenbank entkoppeln soll.

Ich habe versucht, eine Fälschung in der Speicherdatenbank zu registrieren, aber dann denke ich, dass es Inkompatibilitätsprobleme gibt, wie ich Code verwendet habe, um Identitäten usw. auf SQL Server- oder SQLite-Weise abzurufen.

// container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(":memory:", false, SqliteOrmLiteDialectProvider.Instance));
// container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(":memory:", false, SqlServerDialect.Provider));

Ich möchte nur entkoppeln und Unit-Test. Irgendwelche Ideen bitte?

***AKTUALISIEREN

public class UnitTest1
{
    private Container container;

    [TestMethod]
    public void TestMethod1()
    {
        container = new Container();

        // container.Register<IDbConnectionFactory>(new OrmLiteConnectionFactory(":memory:", false, SqliteDialect.Provider));
        // sqlite didnt work so attempting with a real DB for now
        var connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=XXX;Integrated Security=True";
        container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider));

        // dependencies are injecting ok 
        container.RegisterAutoWiredAs<FeedbackRepo, IFeedbackRepo>();

        // service is autowiring --> leading to good injections
        container.RegisterAutoWired<FeedbackService>();

        var service = container.Resolve<FeedbackService>();
        service.SetResolver(new BasicResolver(container));

        // unit test is working well  
        var request = new DTO.FeedbackDto { Message = "test" };
        bool result = service.Post(request);
   }
}

Im Moment versuche ich, 'Db' dazu zu bringen, in meinen abgeleiteten Serviceklassen nicht mehr null zu sein.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage