みなさん、こんにちは。
今回はこちらの記事が元ネタです。こちら
今回も前回と同じくMVCのPreview版での記事です。
頑張ってみましたが、全てをやるのは無理でした。
とにかく中身へ。
記事は前回のものを使用します。
忘れた方、まだやってない方は前回のブログを参照してください。
1ページ目、2ページ目と見ていきます。
AccountControllerの中身は正式版と異なっていますが、そこはスルーで。
3ページ目に移るとテストになっています。
追加するのはVisualC#のテストプロジェクトで大丈夫です。
最初のコードでは、デフォルトの場合はうまく行きます。
では、それ以外の時はどうなるかというと、どうも私の場合は、
global::System.Configuration.ConfigurationManager.ConnectionStrings["pubsConnectionString"]
がnullになってエラーになります。
そこで、PubsControllerの中で、
PubsDataContext pubsDC = global::System.Configuration.ConfigurationManager.ConnectionStrings["pubsConnectionString"] == null ? new PubsDataContext("Integrated Security=True;Initial Catalog=Pubs;Data Source=(local)\\SQLEXPRESS") : new PubsDataContext();
という具合に変更するとうまく動くのですが、テストのためにコードを書き換えるのは・・・どうでしょうか?
次のルーティングのテストにおいては、記事に書いているMvcFakers.dllを入手します。
の中のDownload the codeの所からソースをダウンロードするとプロジェクトの中のbinの中にあります。
テストコードの中のGlobalApplicationはMvcApplicationに変わっています。
コードは次のようになります。
---------------------------------------------------------------------------------------------------
[TestMethod]
public void RegisterRoute()
{
RouteCollection routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);
var context = new FakeHttpContext("~/Pubs/Publisher");
RouteData route = routes.GetRouteData(context);
Assert.IsNotNull(route, "探しているルートが見つかりませんでした。");
Assert.AreEqual("Pubs", route.Values["controller"], "Pubsがコントローラーに見つかりませんでした。");
Assert.AreEqual("Publisher", route.Values["action"], "PublisherがActionに見つかりませんでした。");
}
---------------------------------------------------------------------------------------------------
4ページ目に移ってフィルターになります。
現在は次のようにしないといけないようです。
--------------------------------------------------------------------------------------------------
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class UserFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//base.OnActionExecuting(filterContext);
if (filterContext.HttpContext.User.Identity.Name != "naoki")
{
throw new SecurityException("naokiしか表示できません。");
}
}
}
-------------------------------------------------------------------------------------------------
5ページ目以降はうまくできませんでした。
お許しを。
では、次回にまた会いましょう!(あればですが・・・