2016-05-24 10 views
4

Momentan arbeite ich an Komponententests für eine Xamarin MvvmCross Anwendung mit SQLite.Net-PCL 3.1.1. Das Unit-Test-Projekt ist ein normales .NET-Projekt.Ist es möglich, eine In-Memory-Datenbank mit SQLite.Net-PCL zu erstellen?

So, jetzt bin ich spöttisch die MvxSqliteConnectionFactoryBase

public class MockMvxSqliteConnectionFactoryBase : MvxSqliteConnectionFactoryBase 
{ 
    #region implemented abstract members of MvxSqliteConnectionFactoryBase 

    public override string GetPlattformDatabasePath(string databaseName) 
    { 
     return "Data Source=:memory:"; 
    } 

    public override ISQLitePlatform GetCurrentPlatform() 
    { 
     return new SQLite.Net.Platform.Generic.SQLitePlatformGeneric(); 
    } 
    public override ISQLitePlatform GetCurrentPlatform(string key) 
    { 
     return new SQLite.Net.Platform.Generic.SQLitePlatformGeneric(); 
    } 

    #endregion 
} 

Aber die Datenbank nicht eher im Speicher erzeugt als im bin Ordner des Projektes.

Ich habe versucht, SQLiteConnection wie diese example zu initialisieren, aber es gibt keinen Konstruktor, der nur eine Zeichenfolge akzeptiert.

+3

@Aron eigentlich * kann * mit oder ohne eine Sicherungsdatei arbeiten. Die Verwendung als Nur-Speicher ist ein sehr häufiges Szenario. Darum geht es in dieser Frage. –

+1

Dies ist eine absolut gültige Frage. Alle Downvoter sollten eine gültige Erklärung geben –

+0

@Aron https://www.sqlite.org/inmemorydb.html – stuartd

Antwort

1

Nach dem Hinweis, dass @CL. gab mir mir die Methode GetPlattformDatabasePath geändert: im Ordner ist und dort

public override string GetPlattformDatabasePath(string databaseName) 
    { 
     return ":memory:"; 
    } 

Jetzt etwas, was ich sehe nicht geschaffen werde keine Notwendigkeit für die extisting Daten nach jeder Einheit Testlauf gelöscht werden, so dass die Datenbank muss im Speicher sein.