justmock では、コンストラクター呼び出しを次のように配置することで、実際のインスタンスの代わりにモック化されたインスタンスを返すことができます。
Mock.Arragne(()=>new MyClass(Arg.IsAny<string>())).IgnoreInstance().Returns(Mock.Create<MyClass>());
しかし、クラスで同じことを試してみると、UrlHelper
モックされた型ではなく、実際の型がインスタンス化されています。これに間違いがあるかどうかは誰にもわかりますか:
UrlModel クラス
public class UrlModel
{
private UrlHelper url;
public UrlModel()
{
url = new UrlHelper(HttpContext.Current.Request.RequestContext);
}
}
試験方法 :
public void UrlTest()
{
Mock.Arrange(() => HttpContext.Current.Request.RequestContext).Returns(Mock.Create<RequestContext>());
var mockedUrl = Mock.Create<UrlHelper>();
Mock.Arrange(() => new UrlHelper(Arg.IsAny<RequestContext>()))
.IgnoreArguments()
.IgnoreInstance()
.Returns(mockedUrl);
//Here url will have actual instance instead of mocked instance
var model = new UrlModel();
//Assert is ommitted for bravity ..
}