Cha*_*ell 4 c# functional-testing servicestack
我正在我的应用程序上进行一些功能测试,我想我已经非常接近了.我的问题是,当我运行第一次测试时,我得到了错误.
无法连接到远程服务器.
预期:好的
但是:0
我可以确认,如果我在断言上设置断点,然后尝试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 ) );
}
Run Code Online (Sandbox Code Playgroud)
在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();
}
}
Run Code Online (Sandbox Code Playgroud)
而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<IMigrationRunner>();
migrationRunner.CreateDatabase();
migrationRunner.RunAll();
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我也在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<IDbConnectionProvider>( containr => new DbConnectionProvider( dbConnection.ConnectionString, dbConnection.ProviderName ) );
container.Register<IDbProvider>( containr => new DbProvider( containr.Resolve<IDbConnectionProvider>(), databaseName ) );
// Register repositories
container.RegisterAs<DatabaseVersionRepository, IDatabaseVersionRepository>();
container.RegisterAs<UserRepository, IUserRepository>();
container.RegisterAs<GroupRepository, IGroupRepository>();
container.RegisterAs<DeviceRepository, IDeviceRepository>();
container.RegisterAs<SecuritySettingsRepository, ISecuritySettingsRepository>();
// Register services
container.RegisterAs<UserService, IUserService>();
container.RegisterAs<GroupService, IGroupService>();
container.RegisterAs<SecuritySettingsService, ISecuritySettingsService>();
// Register everything else
container.RegisterAs<PasswordHasher, IPasswordHasher>();
container.RegisterAs<MigrationRunner, IMigrationRunner>();
container.Register( new UserModel { Id = new Guid( "6C83DDEC-5E58-4F28-BDE2-61EBF1B49691" ) } );
}
}
Run Code Online (Sandbox Code Playgroud)
我们这样做Db设置的原因是因为我们在App.Config中有一个连接字符串和db名称,我们在部署期间依赖Transforms来设置数据库.
任何人都可以帮我解决这个问题吗?
在与@mythz进行了长时间的对话之后,事实证明VS必须在管理模式下运行才能运行"AppHostHttpListenerBase".
从终端运行./build时,我还必须以管理员身份运行Powershell.
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |