Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 无法拦截非虚拟方法_Unit Testing_Mocking_Fakeiteasy - Fatal编程技术网

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无法为您做任何事情,除非您将成员虚拟化(或将其升级到接口并伪造接口,或类似的东西)