これは非常に基本的な質問だと思いますが、どうすればよいかわかりません。
異なるユーザーログインIDでアプリケーションをテストしようとしています(これらのユーザーは異なる役割を持っているため)。アプリケーションはシステムユーザーのログイン情報を使用し、独自のログインはありません。はuser.identity.name
値を取得するために使用されます。ただし、この値をオーバーライドして、さまざまなユーザーログインをテストしたいと思います。これどうやってするの?
これは非常に基本的な質問だと思いますが、どうすればよいかわかりません。
異なるユーザーログインIDでアプリケーションをテストしようとしています(これらのユーザーは異なる役割を持っているため)。アプリケーションはシステムユーザーのログイン情報を使用し、独自のログインはありません。はuser.identity.name
値を取得するために使用されます。ただし、この値をオーバーライドして、さまざまなユーザーログインをテストしたいと思います。これどうやってするの?
認証チケットを設定するときは、そこで変更してください。Forms Auth(ユーザーとしてログイン)を使用していると想定しています。
FormsAuthentication.RedirectFromLoginPage("Joe",false);
Windows認証を使用している場合は、偽装を使用できます。
別の方法として、Windows認証を使用している場合は、ブラウザの設定を変更してログインを求めるプロンプトを表示することもできます。次に、別のユーザーとしてログインします。
Moqのようなものでいつでもモックできます
Mock<ControllerContext> ControllerContextMock;
string UserName = "TestUser";
ControllerContextMock = new Mock<ControllerContext>();
ControllerContextMock.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(UserName);
これは私が私のユニット/行動テストを行う方法です
以下の私のコメントによると、getuserNameの周りにラッパーを追加しています
public string OverideName;
private string GetUserName()
{
string name;
if(OverideName != null && OverideName.Langth>0)
{
name = OverideName;
}else
{
name = User.Identity.Name;
}
return name;
}
ほとんどの古いasp.netWebフォームのテストでは、これが実際にテストする唯一の方法です。
私も同じことをしたいと思っています。
私の考えは、「IDの変更」ページを作成することです(私のアプリケーションで管理者の役割を持つ人だけがアクセスできます)。その後、アプリケーションをテストする目的で、別の人/役割になることを選択できます。
アプリケーションの各ページは、セッションセットのユーザーIDとロールが有効かどうかをテストし(アプリケーションの最初の使用時に設定)、ページをロードして、そのユーザー/ロールが表示する情報/機能を表示します。したがって、この「IDの変更」機能は、セッションのユーザーIDと役割をテスト対象のユーザーのものに設定し、テスト対象のユーザーが他のユーザーであるかのように動作できるようにします。また、自分自身をリセットするためのリセットオプションを提供します。
最も簡単な解決策は、ユーザーが名前を更新するときです-彼をログアウトし、ログインを要求します。私のためのその仕事