3

I am using RavenTestDriver for my .net core unit tests . Here is my configuration of my RavenTestDriver in my unit test solution :

public class TestHostBuilder : RavenTestDriver, IAsyncLifetime { public async Task InitializeAsync() { ConfigureServer(new TestServerOptions { CommandLineArgs = new System.Collections.Generic.List<string> { "--RunInMemory=true", }, FrameworkVersion = null, }); var hostBuilder = easy.api.Program.CreateHostBuilder(new string[0]) .ConfigureWebHost(webHostBuilder => { webHostBuilder.UseTestServer(); }) .ConfigureServices(services => { services.AddScoped<ICurrentUserService, InitRequest>(); services.AddRavenDbAsyncSession(GetDocumentStore()); services.AddScoped<IAsyncDocumentSession>((c) => { return GetDocumentStore().OpenAsyncSession(new SessionOptions() { Database="test-server" }); }); }); var host = hostBuilder.Start(); } } 

But when I call my Repository to get the object I get this error :

Database 'test-server' does not exist.' at Raven.Client.Exceptions.Database.DatabaseDoesNotExistException.Throw(String databaseName) in C:\Builds\RavenDB-Stable-5.3\53009\src\Raven.Client\Exceptions\Database\DatabaseDoesNotExistException.cs:line 35 at Raven.Client.Http.RequestExecutor.<ExecuteAsync>d__114`1.MoveNext() in C:\Builds\RavenDB-Stable-5.3\53009\src\Raven.Client\Http\RequestExecutor.cs:line 883 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Raven.Client.Http.RequestExecutor.<ExecuteAsync>d__114`1.MoveNext() in C:\Builds\RavenDB-Stable-5.3\53009\src\Raven.Client\Http\RequestExecutor.cs:line 900 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Raven.Client.Http.RequestExecutor.<UpdateTopologyAsync>d__101.MoveNext() in C:\Builds\RavenDB-Stable-5.3\53009\src\Raven.Client\Http\RequestExecutor.cs:line 455 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at Raven.Client.Http.RequestExecutor.<FirstTopologyUpdate>d__109.MoveNext() in C:\Builds\RavenDB-Stable-5.3\53009\src\Raven.Client\Http\RequestExecutor.cs:line 678 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Raven.Client.Http.RequestExecutor.<WaitForTopologyUpdate>d__107.MoveNext() in C:\Builds\RavenDB-Stable-5.3\53009\src\Raven.Client\Http\RequestExecutor.cs:line 613 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Raven.Client.Http.RequestExecutor.<UnlikelyExecuteAsync>d__106`1.MoveNext() in C:\Builds\RavenDB-Stable-5.3\53009\src\Raven.Client\Http\RequestExecutor.cs:line 583 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Raven.Client.Documents.Session.AsyncDocumentSession.<LoadAsync>d__51`1.MoveNext() in C:\Builds\RavenDB-Stable-5.3\53009\src\Raven.Client\Documents\Session\AsyncDocumentSession.Load.cs:line 30 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at infrastructure.Persistence.RavenDb.RavenRepository`1.<GetByIdAsync>d__6.MoveNext() in D:\gitProjects\Orbis\infrastructure\Persistence\RavenDb\RavenRepository.cs:line 83 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at infrastructure.ApplicationCache.CacheableRepository`1.<GetAsync>d__8.MoveNext() in D:\gitProjects\Orbis\infrastructure\ApplicationCache\CacheableRepository.cs:line 48 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at easy.api.Application.Setting.Queries.GetClientAppSettingQueryHandler.<Handle>d__4.MoveNext() in D:\gitProjects\**\***\Application\Setting\Queries\GetClientAppSettingQuery.cs:line 35 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at api.common.Behaviors.UnhandledExceptionBehaviour`2.<Handle>d__2.MoveNext() in D:\gitProjects\**\api.common\Behaviors\UnhandledExceptionBehaviour.cs:line 22 

1 Answer 1

3

You need to create the database before calling OpenAsyncSession https://ravendb.net/docs/article-page/5.3/csharp/client-api/operations/server-wide/create-database#example

Sign up to request clarification or add additional context in comments.

7 Comments

Thank you it works .I just added this part to my init method : try { store.Maintenance.ForDatabase("test-server").Send(new GetStatisticsOperation()); } catch (DatabaseDoesNotExistException) { try { store.Maintenance.Server.Send(new CreateDatabaseOperation(new DatabaseRecord("test-server"))); } catch (ConcurrencyException) { } }
In particular, why are you defining the db name yourself of the test? If you leave that out completely, the RavenTestDriver will do everything for you. Which will later allow you to do things like safely run the tests in parallel.
@AyendeRahien I didn't know that .I deleted database name in my configuration .Thanks Dear friend Ayende
@AyendeRahien When I removed database name from configuration I got several errors : System.AggregateException : One or more errors occurred ---- System.AggregateException-------- System.AggregateException------------ System.AggregateException---------------- System.AggregateException -------------------- Akka.Remote.RemoteTransportException : Failed to bind to [0.0.0.0:3215]. See InnerException for details. ------------------------ System.Net.Sockets.SocketException : Only one usage of each socket address (protocol/network address/port) is normally permitted.Why?
You are calling GetDocumentStore() multiple times, getting different instances.
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.