2016-05-24 4 views
4

В настоящее время я работаю над модульными тестами для приложения Xamarin MvvmCross с использованием SQLite.Net-PCL 3.1.1. Проект модульного тестирования - это обычный проект .NET.Возможно ли создать базу данных In-memory с использованием SQLite.Net-PCL?

Так что теперь я насмешливый 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 
} 

Но база данных не создается в памяти, а не в bin папке проекта.

Я попытался инициализировать SQLiteConnection следующим образом: example, но нет конструктора, который принимает только одну строку.

+3

@ Арон на самом деле, он * может * работать с файлом резервной копии или без нее. Использование его в качестве памяти - очень распространенный сценарий. Вот о чем этот вопрос. –

+1

Это совершенно правильный вопрос. Любые downvoters должны дать действительное объяснение –

+0

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

ответ

1

Следуя подсказке, что @CL. дал мне, что я изменил метод GetPlattformDatabasePath:

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

Сейчас я не вижу что-то, чтобы создать в папке бин, и нет никакой необходимости в данном extisting должны быть удалены после каждого блок теста, поэтому база данных должен быть в памяти.