我试图在BasicAppHost中模拟用户会话进行测试,如下所示:
TestMode = true;
container.Register<IAuthSession>(c => new AuthUserSession
{
UserAuthId = "1",
Language = "en",
PhoneNumber = "*****",
FirstName = "Test",
LastName = "User",
PrimaryEmail = "test@emailtest.com",
UserAuthName = "testuser",
TimeZone = "America/Guatemala"
}
);
但是,当从服务中检索会话时,将使用空值检索 UserAuthId 属性,并正确检索其他值。
我按如下方式检索用户会话:
var session = SessionAs<IAuthSession>();
在这里你可以看到de值检索值:
我正在使用服务堆栈V4.5
答案 0 :(得分:1)
我无法重现此行为,这在以下示例中正常工作:
public class MockSessionTest {}
public class MockSessionTestService : Service
{
public object Any(MockSessionTest request) =>
SessionAs<AuthUserSession>();
}
using (var appHost = new BasicAppHost
{
ConfigureAppHost = host => host.RegisterService(typeof(MockSessionTestService)),
ConfigureContainer = x => x.Register<IAuthSession>(c => new AuthUserSession {
UserAuthId = "1",
Language = "en",
PhoneNumber = "*****",
FirstName = "Test",
LastName = "User",
PrimaryEmail = "test@emailtest.com",
UserAuthName = "testuser",
})
}.Init())
{
var response = appHost.ExecuteService(new MockSessionTest()) as AuthUserSession;
response.UserAuthId //= 1
response.UserAuthName //= testuser"
response.PrimaryEmail //= test@emailtest.com
}
由于TestMode=true
UserAuthId
SessionAs<T>
,我看不到它可以修改SessionAs<AuthUserSession>()
。
注意Plugins.Add(new AuthFeature(() => new CustomUserSession(),
new IAuthProvider { ... }));
用于解析具体的用户会话类型,因此您通常会使用Running application... Which one is undefined
或注册AuthFeature时注册的Custom UserSession,例如:
'mobileeyeclinic'@'localhost'
同时结帐just returns the Session that's registered in the Container以了解模拟会话的不同方法。