我有以下asp.net页面Contact
并且TestHandlerDemoClass
有一个方法我想为该方法编写单元测试用例但是当我使用MSTest project
尝试它时抛出异常就像
Request not available in this context
public partial class Contact : Page
{
}
public class TestHandlerDemoClass
{
public void MyTestMethod(Page mypage)
{
string id= mypage.Request["EntityId"]
//here I'm not getting Request inside mypage
我的测试项目代码 -
[TestClass]
public class UnitTest1
{
[TestMethod]
public void NullCheck()
{
try
{
Contact contactPage = new Contact();
TestHandlerDemoClass mydemo = new TestHandlerDemoClass();
mydemo.MyTestMethod(contactPage);
}
catch (Exception ex)
{
Assert.AreEqual(ex.Message, "Id not found");
}
}
}
在上面的例子中我得到了像{"Request is not available in this context"}
我只是想为方法`
编写单元测试用例public void MyTestMethod(Page mypage)
以Page mypage
为参数。
怎么做?
答案 0 :(得分:1)
通过模拟测试将通过的Contact
类,问题是大多数单元测试工具不允许模拟非虚拟类。
即时通讯使用Typemock,可以在不改变代码的情况下模拟几乎任何类型的对象,并且可以使用它。
例如:
[TestMethod]
public void NullCheck()
{
try
{
var contactPage = Isolate.Fake.Instance<Contact>();
TestHandlerDemoClass t = new TestHandlerDemoClass();
t.MyTestMethod(contactPage);
}
catch (Exception ex)
{
Assert.AreEqual(ex.Message, "Id not found");
}
}
答案 1 :(得分:0)
我不是单元测试方面的专家,但我认为你应该传递一个模拟对象,如下所示:How to mock the Request on Controller in ASP.Net MVC?