ServiceStack AppHostHttpListenerBase Невозможно подключиться к удаленному серверу
я работаю через несколько функциональных тестов в моем приложении, и я думаю, чтоЯ довольно близко. Моя проблема в том, что когда я запускаю свой первый тест, я получаю ошибку.
невозможно подключиться к удаленному серверу.
Ожидаемый: хорошо
Но было: 0
Я могу подтвердить, что если я поставлю точку останова на Assert, а затем попробую нажатьBaseUrl
в моем браузере он не найден.
Вот'мой тест
[Test]
public void MyTestTest ()
{
var client = new RestClient( ServiceTestAppHostBase.BaseUrl );
// client.Authenticator = new HttpBasicAuthenticator( NUnitTestLoginName, NUnitTestLoginPassword );
var request = new RestRequest( "/users/", Method.GET );
request.RequestFormat = DataFormat.Json;
var response = client.Execute( request );
// do assertions on the response object now
Assert.That( response.StatusCode, Is.EqualTo( HttpStatusCode.OK ) );
}
AppServerTestSetup
выглядит так
[SetUpFixture]
public class AppServerTestSetup
{
ServiceTestAppHostBase _appHost;
[SetUp]
public void SetUp()
{
_appHost = new ServiceTestAppHostBase();
_appHost.Init();
_appHost.Start(ServiceTestAppHostBase.BaseUrl);
}
[TearDown]
public void TearDown()
{
_appHost.Dispose();
}
}
ИServiceTestAppHostBase
выглядит так
public class ServiceTestAppHostBase : AppHostHttpListenerBase
{
public const string BaseUrl = "http://localhost:8082/";
public ServiceTestAppHostBase () : base( "OurApp.AppServer", typeof( UserServiceInterface ).Assembly ) { }
public override void Configure ( Container container )
{
JsConfig.EmitCamelCaseNames = true;
SetConfig( new EndpointHostConfig
{
MapExceptionToStatusCode = {
{ typeof( NotFoundException ), 404 }, // Map exception to 404 not found http response.
{ typeof( SystemAccountChangeException ), 405 } // Map exception to 405 method not allowed.
}
} );
// Shared Container Registration
AppHostContainerRegistrations.Register( container );
// Setup the database
var migrationRunner = container.Resolve();
migrationRunner.CreateDatabase();
migrationRunner.RunAll();
}
}
примечание: ям также с помощьюAppHostContainerRegistrations
в основном приложении, и оно работает. Я'мы также убедились, что этозапускается в тестовой настройке.
AppHostContainerRegistrations
(для справки) выглядит так.
public class AppHostContainerRegistrations
{
public static void Register(Container container)
{
// IOC Registration
// Register base connection config
var dbConnection = ConfigurationManager.ConnectionStrings["databaseConnection"];
var databaseName = ConfigurationManager.AppSettings["databaseName"];
// Register Sqlserver DbProvider
container.Register( containr => new DbConnectionProvider( dbConnection.ConnectionString, dbConnection.ProviderName ) );
container.Register( containr => new DbProvider( containr.Resolve(), databaseName ) );
// Register repositories
container.RegisterAs();
container.RegisterAs();
container.RegisterAs();
container.RegisterAs();
container.RegisterAs();
// Register services
container.RegisterAs();
container.RegisterAs();
container.RegisterAs();
// Register everything else
container.RegisterAs();
container.RegisterAs();
container.Register( new UserModel { Id = new Guid( "6C83DDEC-5E58-4F28-BDE2-61EBF1B49691" ) } );
}
}
Причина, по которой мынаша настройка Db выполняется следующим образом, потому что у нас есть одна строка подключения и имя базы данных в App.Config, и мы используем Transforms во время развертывания для настройки базы данных.
Может кто-нибудь помочь мне решить эту проблему?