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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Entity framework 我怎样才能让最小起订量忽略一个函数?_Entity Framework_Unit Testing_Moq - Fatal编程技术网

Entity framework 我怎样才能让最小起订量忽略一个函数?

Entity framework 我怎样才能让最小起订量忽略一个函数?,entity-framework,unit-testing,moq,Entity Framework,Unit Testing,Moq,我试图用以下方法模拟Moq中的一个类: public virtual void Init(Context context, IPrincipal user) { _context = context; _user = user; var u = _context.Users.Include("Foo").First(x => x.Login == _user.Identity.Name); 调用此的代码如下所示: mockLoginState.CallBase

我试图用以下方法模拟Moq中的一个类:

public virtual void Init(Context context, IPrincipal user)
{
    _context = context;
    _user = user;

    var u = _context.Users.Include("Foo").First(x => x.Login == _user.Identity.Name);
调用此的代码如下所示:

mockLoginState.CallBase = false;
mockLoginState.Setup(x => x.Init(It.IsAny<Context>(), It.IsAny<IPrincipal>()));
mockLoginState.CallBase=false;
mockLoginState.Setup(x=>x.Init(It.IsAny(),It.IsAny());
我不希望实际调用此方法,因为它会影响数据库。从我对Moq的理解来看,这应该被打断,因为它是虚拟的,函数中的代码不应该运行,但这不是我所经历的。基本上,我的问题与这里描述的完全一样: 但这个问题的答案对我来说并不适用


如何阻止调用该函数?

您上面的代码看起来是正确的。您确定要对模拟对象调用
Init
方法吗?在构建
模拟时,您是否尝试过使用
MockBehavior.Strict
?如果调用了任何未显式设置的方法,则会引发异常


否则,您可能需要为上下文提供更多的代码。

Joe Taylor的回答是一个线索

显然,
Init
函数是在我的LoginState对象的构造函数中调用的。当我创建
Mock
时,它正在被调用,因此我的重写发生得太晚了

有关处理此约束的详细信息,请参阅以下问题:

您实际上没有使用链接问题的公认答案中详细说明的
.verifyable()
/
.Verify()
。如果你添加了这些,它会跳过你的方法吗?你能发布你的完整测试吗?您需要将
mockLoginState.Object
作为此依赖项的实例注入SUT,或者如果此类是您的SUT,则需要调用在
mockLoginState.Object
实例上测试的方法。