0

我对 ninject 和测试也很陌生。

我有一个 mvc4 应用程序,我想开始为其编写测试。(是的,我知道我打算边写边写:))

在我的 NinjectWebCommon 中

  private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
        kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

        RegisterServices(kernel);
        return kernel;
    }

    private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind<IConsumerRepository>().To<ConsumerRepository>();
    }

我已经在我的应用程序中的存储库中编写了所有内容,例如我有

public interface IConsumerRepository
{
    ConsumerModel GetConsumerByUserId(Guid userId);
}
public ConsumerModel GetConsumerByUserId(Guid userId)
    {
        if (HttpContext.Current.Session["ConsumerInfo"] == null)
        {
            var data = RestSharperHelper.GetById<ConsumerModel>("id", userId, ApiEndPointConstants.GetConsumerById);
            LogMessage(data.UserName);
            HttpContext.Current.Session["ConsumerInfo"] = data;
            return data;
        }
        else
        {
            return (ConsumerModel)HttpContext.Current.Session["ConsumerInfo"];
        }
    }

我编写测试以检查 ConsumerModel 是否从 Web 应用程序存储库返回的最佳方法是什么?我希望它灵活,因为我想编写更复杂的测试并提供一个模拟 ConsumerModel 而不是每次都像上面那样调用 api

感谢您的任何建议!

4

1 回答 1

0

MVCContrib TestHelper可能会有所帮助。它将帮助您对控制器操作进行单元测试,并且还将初始化所有这些部分,例如HttpContextSession

http://mvccontrib.codeplex.com/wikipage?title=TestHelper

于 2012-10-15T08:11:25.700 回答