1

私は自分の API サービスを単体テストしていますが、MockRquestContext をうまく使用しています。this.GetSession() の呼び出しは常に IAuthSession を返しますが、私はカスタム AuthUserSession を持っており、私の知る限り、カスタム AuthUserSession のインスタンスを作成してモック コンテキストに追加する方法はありません。これは可能ですか?

var service = container.Resolve<AgencyCaseService>();
        service.SetResolver(new BasicResolver(container));

        var context = new MockRequestContext() { ResponseContentType = ContentType.Json };
        //Something like this
        MyCustomAuthSession session = new MyCustomAuthSession() { set some values}

        context.AuthSession = session//this doesn't exist but it's the type of thing i need to do

        service.RequestContext = context;
4

1 に答える 1

2

セッションはリクエスト コンテキスト上にありませんICacheClient。作成するには、SessionFeature および HttpRequest Cookie の混合が必要です。

Service 内でモックする方法の実装を見ることができます。これは、最初に Container で解決しようとすることを示しています。

private object userSession;
protected virtual TUserSession SessionAs<TUserSession>()
{
    if (userSession == null)
    {
        userSession = TryResolve<TUserSession>(); //Easier to mock
        if (userSession == null)
            userSession = Cache.SessionAs<TUserSession>(Request, Response);
    }
    return (TUserSession)userSession;
}

したがって、それをモックするには、次のようにします。

container.Register(new MyCustomAuthSession() { /* set some values*/ });
于 2013-10-04T05:52:37.803 に答える