11

方法があります。ハードディスクからドキュメントを取得します。単体テストからこれをテストすることはできません。例外無効なヌルパスまたは何かを常にスローします。それをテストする方法。単体テスト用のセッションを一時的に作成しました。しかし、この Server.MapPath はできません。どうやってするか ?

4

3 に答える 3

9

変更できない、または変更したくないレガシーコードをテストする必要がある場合は、FakeHttpContextを試すことができます。

これがどのように機能するかです:

var expectedPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "path");
using (new FakeHttpContext())
{
    var mappedPath = Http.Context.Current.Server.MapPath("path");
    Assert.Equal(expectedPath, mappedPath);
}
于 2016-01-25T08:44:16.073 に答える
0

私は NSubstitute を使用していましたが、以下のように実装しました。

 var fakeContext = Substitute.For<HttpContextBase>();
fakeContext.Server.MapPath(Arg.Any<string>()).ReturnsForAnyArgs("/set-path/");
于 2019-10-07T21:58:49.757 に答える