私のコントローラのアクションのいくつかは、このメソッドをGenerateActionLink
と呼びます。asp.net MVCのUrlオブジェクトをどうやって模擬するのですか
private string GenerateActionLink(string actionName, string token, string username)
{
string validationLink = null;
if (Request.Url != null)
{
var encodedToken = EncodedUrlParameter(token);
var url = Url.Action(actionName, "Register", new {Token = encodedToken, Username = username}, Request.Url.Scheme);
validationLink = url;
}
return validationLink;
}
これは電子メールで送信される確認リンクを生成するためのものです。それは完全に動作します。私が抱えている問題は、メソッドを呼び出したコントローラアクションをテストするときです。 Urlはnullです。
私はそれを模擬して単体テストでモックを使用できますか?
私はMoq
とNUnit
を使用しています。
注:ActionNameを渡すことができるようにする必要があります。これは、Request.Urlには常に要求が出てくるアクションが一般的なアクションであるため、私はパラメータ値でRequest.Urlをconcatinatingしていません私はリンクにしたい、これは私がアクションリンクを生成するためにUrl.Actionを使用している理由です。
モック 'UrlHelper'をモック、テストを配置する際、コントローラの' Url'プロパティを設定ユニットテストの例です。リクエストを模擬するにはコントローラのhttpコンテキストを疑似し、コントローラコンテキストを設定します。 – Nkosi