c# - TDD 和 protected 方法

标签 c# asp.net-mvc tdd

<分区>

我正在尝试通过创建现有 MVC 应用程序的副本来学习 TDD,但我正在使用 TDD 从头开始​​创建它的副本。

在我现有的应用程序中,我有一个 Application_AuthenticateRequest 方法,如下所示。

这是 protected 。我认为不应测试这些方法是否正确 - 即您应该只测试公共(public)方法而不是私有(private)和 protected 方法。如果这是真的,那么我是否可以在下面编写我的 protected 方法而不为其编写任何测试?

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        StaticDataSeeder.Seed();
    }

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
        HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];

        if (authCookie == null) return;

        var authTicket = FormsAuthentication.Decrypt(authCookie.Value);

        if (authTicket == null) return;

        var userData = new UserDataModel(authTicket.UserData);

        var userPrincipal = new PaxiumPrincipal(new GenericIdentity(authTicket.Name), null)
        {
            Email = userData.Email,
            Menu = userData.Menu,
            RememberMe = userData.RememberMe
        };

        Context.User = userPrincipal;
    }
}

最佳答案

仅仅进行测试并不能使其成为 TDD。如果您已经假设私有(private)方法可以做某事,那么开发不是由测试驱动的,对吗?

尝试盲目地先编写测试,你可能最终根本不需要私有(private)方法,甚至将它作为另一个类中的公共(public)方法。

关于c# - TDD 和 protected 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30474432/

相关文章:

c# - 反序列化数组元素以列出

mysql - 在 cshtml 中创建新闻源

c# - 如何从 ASP.NET MVC 5 中的模型创建表单?

c# - MVC ViewModel 包含一个字典,用于将空值返回给 Controller 的字段

java - 如何验证没有使用 Mockito 调用特定方法?

unit-testing - 某些逻辑路径本质上是不可测试的吗?

c# - 是否可以使用条件属性来创建类似的调试器和运行时方法?

c# - Debug.Assert 与特定抛出的异常

c# - 从 c# 调用 c zlib 解压缩

python - 扭曲的海螺试验 TDD, "StringTransport instance has no attribute..."