快速业务通道

使用asp.net mvc再造一个digg 第一部分

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
s里名 为Shared 的文件夹里。这个controller 里的其他方法工作原理都跟这个十分相似。我这里需要提到的一件重要的事情是,我们在构造函数里 传递了一个抽象的membership provider来代替静态的Membership 类。这样做是因为在单元测试中我们可以传递一个模仿的Membership Provider,我们将在下一小节展示。在另一个构造函数中,我们传递web.config中定义的默认membership provider。

测试UserController

为了测试这个Controller,我们仍然使用Phil Haack前几周在Writing Unit Tests For Controller Actions一文中的方法。前面一小节说 过,我们把一个模仿的Membership Provider传递过去来测试这个controller。我们预想在controller 调用这个membership provider然后能够 得到正确的数据并发送给view。下面这些代码展示了正确的登录和当用户名为空时错误的登录:

1. [TestInitialize]
2. public void Init()
3. {
4.   mocks = new MockRepository();
5.   userManager = mocks.PartialMock<MembershipProvider>();
6.   controller = new UserControllerForTest (userManager);
7. }
8.
9. [TestMethod]
10. public void ShouldLogin()
11. {
12.   using (mocks.Record())
13.   {
14.     Expect.Call(userManager.ValidateUser(DefaultUserName, DefaultPassword)).IgnoreArguments().Return(true);
15.   }
16.
17.   using(mocks.Playback())
18.   {
19.
20.     controller.Login(DefaultUserName, DefaultPassword, true);
21.   }
22.
23.   Assert.AreEqual(controller.SelectedView, "Json");
24.   Assert.IsInstanceOfType(controller.SelectedViewData, typeof(JsonResult));
25.   Assert.IsTrue(((JsonResult)controller.SelectedViewData).isSuccessful);
26.   Assert.IsNull(((JsonResult)controller.SelectedViewData).errorMessage);
27. }
28.
29. [TestMethod]
30. public void ShoudNotLoginForEmptyUserName()
31. {
32.   controller.Login(string.Empty, DefaultPassword, false);
33.
34.   Assert.AreEqual(controller.SelectedView, "Json");
35.   Assert.IsInstanceOfType(controller.SelectedViewData, typeof(JsonResult));
36.   Assert.IsFalse(((JsonResult) controller.SelectedViewData).isSuccessful);
37.   Assert.AreEqual(((JsonResult) controller.SelectedViewData).errorMessage, "User name cannot be blank.");
38. }

综述

我最初想用一篇文章搞定所有问题,但是你也发现了,这篇文章实在是太长了。

译注:确实长的可以。

在这篇文章中,我们首先简单了解了一下ASP.NET MVC Framework,然后讲解了如何在controllers里定义功能,如何定义筛选规则并通过 URLs测试他们,我们也看见了如何在Controller 中使用JSON 数据来代替完整的HTML视图。在本文的下一个部分里,我们讲着重讲解 Controller,如何展示完整的HTML视图,使用master pages和user controls来创建视图,给视图发送强类型的view data和最后创建Model。就 此停笔。

原文地址:http://dotnetslackers.com/articles/aspnet/KiggBuildingADiggCloneWithASPNETMVC1.aspx

原文作者:Kazi Manzur Rashid

本文地址:http://www.cnblogs.com/jpwar/archive/2008/03/02/1087092.html

本文配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号