-->

试图存根与使用Server.Mappath测试MvcContrib佣工和犀牛制品3.5(Trying

2019-09-26 13:22发布

我使用MvcContrib的测试佣工和犀牛嘲笑3.5测试一个ASP.NET MVC操作方法。 我建立了我的假控制器,如下所示:

var _builder = new TestControllerBuilder();
_builder.InitializeController(_controller);

所以,我得到一个包含假冒HTTP服务器等假控制器

然后我试图存根像这样的方法使用Server.Mappath

controller.Server.Stub(x => x.MapPath(Arg<string>.Is.Anything)).Return("/APP_DATA/Files/");

但在我的测试方法调用使用Server.Mappath(“/ APP_DATA /文件/”)将返回null。

这是测试

    const string STOCK_NUMBER_ID = "1";
    const string FULL_FILE_PATH = "App-Data/Files";

    var controller = CreateStockController();
    _uploadedFileTransformer.Stub(x => x.ImageBytes).Return(new byte[10]);
    _uploadedFileTransformer.Stub(x => x.ConvertFileToBytes(FULL_FILE_PATH)).Return(true);

    controller.Server.Stub(x => x.MapPath(Arg<string>.Is.Anything)).Return("/App_Data/Files/");

    controller.AddImage(Guid.NewGuid(), STOCK_NUMBER_ID);

我很想念?

Answer 1:

旧的职位,但我正在寻找这一点,我发现了一个解决方案,MvcContrib的TestHelper可能得到它固定的,因为对我来说它的工作。

_builder.HttpContext.Server.Stub(s => s.MapPath("~/" + filepath)).Repeat.Once().Return(mapedPath);


Answer 2:

看起来这是在MVCContrib一个bug(至少与我有什么我的机器上 - V1.0.0.0)。 当设置控制器上下文,它使用Rhino.Mocks记录/重放模式,但(这是错误),它不会把模拟的HttpServer进入回放模式。 它把一切都在回放模式下其他人,但没有一个。

所以速战速决是要做到:

controller.Server.Replay();

作为测试你的“安排”一节的一部分。 然后它工作正常。



文章来源: Trying to stub Server.MapPath with MvcContrib Test helpers and Rhino Mocks 3.5