문제

Im having Trouble setting up an in memory database using RavenDB.

The error I get is: I get is: SetUp : System.MissingMethodException : Method not found: 'Raven.Json.Linq.RavenJObject Raven.Abstractions.Extensions.JsonExtensions.ToJObject(Byte[])'

Full Error Trace:

SetUp : System.MissingMethodException :
    Method not found: 'Raven.Json.Linq.RavenJObject Raven.Abstractions.Extensions.JsonExtensions.ToJObject(Byte[])'. 
at Raven.Storage.Managed.DocumentsStorageActions.DeleteDocument(String key, Nullable1 etag, ref RavenJObject metadata) 
at Raven.Database.DocumentDatabase.<>c__DisplayClass4e.<Delete>b__48(IStorageActionsAccessor actions)
    in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 518 
at Raven.Storage.Managed.TransactionalStorage.Batch(Action1 action)
    in c:\Builds\raven\Raven.Storage.Managed\TransactionalStorage.cs: line 112 
at Raven.Database.DocumentDatabase.Delete(String key, Nullable`1 etag, TransactionInformation transactionInformation)
    in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 509
at Raven.Database.Backup.RemoveBackupDocumentStartupTask.Execute(DocumentDatabase database)
    in c:\Builds\raven\Raven.Database\Backup\RemoveBackupDocumentStartupTask.cs: line 17 
at Raven.Database.DocumentDatabase.ExecuteStartupTasks()
    in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 214 
at Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration configuration)
    in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 173 
at Raven.Client.Embedded.EmbeddableDocumentStore.InitializeInternal() 
at Raven.Client.Document.DocumentStore.Initialize()
    in c:\Builds\raven\Raven.Client.Lightweight\Document\DocumentStore.cs: line 484 
at Aqueduct.Dashboard.Web.Tests.RavenInMemoryDatabase.InMemoryDatabase.DocumentStore()
    in InMemoryDatabase.cs: line 27 
at Aqueduct.Dashboard.Web.Tests.MonitoringServiceTests.Setup()
    in MonitoringServiceTests.cs: line 24

My InMemory db is defined below:

public EmbeddableDocumentStore DocumentStore()
    {

        string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(InMemoryDatabase)).CodeBase);
        path = Path.Combine(path, "testing").Substring(6);

        var documentStore = new EmbeddableDocumentStore()
        {
            Configuration =
            {
                DataDirectory = path,
                RunInUnreliableYetFastModeThatIsNotSuitableForProduction = true,
                DefaultStorageTypeName = "munin",
                RunInMemory = true
            }
        };

        documentStore.Initialize();

        new RavenDocumentsByEntityName().Execute(documentStore);

        return documentStore;
    }

My Test is:

 [TestFixture]
public class MonitoringServiceTests
{
    private IMonitoringService m_monitoringService;
    private PerformanceRepository m_performanceRepository;
    private InMemoryDatabase m_inMemoryDatabase;

    [TestFixtureSetUp]
    public void Setup()
    {
        m_inMemoryDatabase = new InMemoryDatabase();

        m_performanceRepository = new PerformanceRepository(m_inMemoryDatabase.DocumentStore().OpenSession());
        m_monitoringService = new MonitoringService(m_performanceRepository);
    }

    [Test]
    public void RecordSnapShot_RecordsCpuUsage()
    {
        m_monitoringService.RecordSnapShot();
        var allMeasurements = m_performanceRepository.GetAll();
        Assert.IsTrue(allMeasurements.Where(x => x.MeasurementType == MeasurementType.ProcessorUsage).Count() == 1);
    }
}
도움이 되었습니까?

해결책

You probably have mixed versions of the ravendb dlls, that is the only thing that can cause this error

다른 팁

Change the creation of the documentStore to the following and see if that works:

var documentStore = new EmbeddableDocumentStore { RunInMemory = true }

As far as I see you're doing some really weird stuff when creating your store. Why do you want to supply a path when you want to run in memory? Even if, the path can be relative and something simple as "Data".

Check out ravens source code to see (hopefully) many working tests using in-memory storage.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top