Unit testing 无法拦截非虚拟方法
我不太会装腔作势,试图解决问题 我有一节课Unit testing 无法拦截非虚拟方法,unit-testing,mocking,fakeiteasy,Unit Testing,Mocking,Fakeiteasy,我不太会装腔作势,试图解决问题 我有一节课 public class Events { public List<Events> SaveEvents() { // Call to repository and return 1(success) or -1(fail) //If the repository return 1 then need to make another call to save the action in db //Sample Code her
public class Events
{
public List<Events> SaveEvents()
{
// Call to repository and return 1(success) or -1(fail)
//If the repository return 1 then need to make another call to save the action in db
//Sample Code here
AuditLogService log = new AuditLogService();
log.CallLog();
}
}
公共类事件
{
公共列表保存事件()
{
//调用存储库并返回1(成功)或-1(失败)
//如果存储库返回1,则需要再次调用以将操作保存在db中
//这里的示例代码
AuditLogService日志=新的AuditLogService();
log.CallLog();
}
}
以下是测试代码:
[TestMethod]
public void EventValidation()
{
//Arrange
var Fakeevents = A.Fake<Events>();
var log = A.Fake<AuditLogService>();
var _EventsController = new EventsController(Fakeevents);
_EventsController.SaveEvents();
A.CallTo(
() => Fakeevents.SaveEvents().Retunr(1).AssignsOutAndRefParameters(status)
A.CallTo(
() => log.CallLog()).MustHaveHappened(Repeated.AtLeast.Once);
}
I am getting error like "Non virtual methods can not be intercepted"
[TestMethod]
公共void EventValidation()
{
//安排
var Fakeevents=A.Fake();
var log=A.Fake();
var_EventsController=新的EventsController(Fakeevents);
_EventsController.SaveEvents();
卡拉托(
()=>Fakeevents.SaveEvents().Retunr(1).AssignsOutAndRefParameters(状态)
卡拉托(
()=>log.CallLog())。必须已发生(重复。至少。一次);
}
我遇到了类似“非虚拟方法无法被拦截”的错误
我想检查Calllog方法是否在成功后被调用
谁能帮我一下吗
我有一个方法,在一个方法中,我正在启动另一个类并调用该类的一个方法。我想通过FakeiTesy检查是否调用了该方法。不幸的是,您的标题说明了一切。非虚拟成员不能被伪造、配置或拦截,如“”下的文档中所述 FakeiTesy无法为您做任何事情,除非您将成员虚拟化(或将其升级到接口并伪造接口,或类似的东西)