Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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
C# 使用MSTest和Moq-测试存储库。验证是否不工作_C#_Model View Controller_Moq_Mstest - Fatal编程技术网

C# 使用MSTest和Moq-测试存储库。验证是否不工作

C# 使用MSTest和Moq-测试存储库。验证是否不工作,c#,model-view-controller,moq,mstest,C#,Model View Controller,Moq,Mstest,我目前正在考虑用Moq编写基本执行计时器的单元测试。有一个函数在计时器停止时调用,它将所有计时添加到数据库中,我需要测试插入是否已被调用。 我使用了类似的测试,通过homecontroller测试插件,但这是直接完成的 // Calls AddToLog() which iterates through the list // adding all entries to the database _timer.Stop(); _repository.Verify(x => x.Ins

我目前正在考虑用Moq编写基本执行计时器的单元测试。有一个函数在计时器停止时调用,它将所有计时添加到数据库中,我需要测试插入是否已被调用。 我使用了类似的测试,通过homecontroller测试插件,但这是直接完成的

// Calls AddToLog() which iterates through the list 
// adding all entries to the database

_timer.Stop(); 
_repository.Verify(x => x.Insert(TimerObject));
我收到的错误是:

Expected invocation on the mock at least once, but was never performed: x => x.Insert(.splitTimer)

Performed invocations:
ITimersRepository.Insert(EF.Domain.Entities.Timer)
ITimersRepository.Insert(EF.Domain.Entities.TimerSplit)
ITimersRepository.Save()
正在调用addToLog()方法,并且正在调用存储库的.insert。我真的不知道为什么它没有被叫来

任何想法都很好

谢谢

\u timerRepository.Verify(x=>x.Insert(It.IsAny());
这正是我所需要的。它检查插入是否是由计时器类型触发的,并且不是特定的(因为它不能是在其他位置创建的对象)

\u timerRepository.Verify(x=>x.insert(It.IsAny());

这正是我所需要的。它检查插入是否是由计时器触发的,并且不是特定的(因为它不能是在其他地方创建的对象)

我相信我已经找到了答案。它应该是_timerRepository.Verify(x=>x.Insert(It.IsAny());。有人能证明我是用正确的方法做的吗?你可能需要提供更多的上下文。对你可以用它来验证。我喜欢你说的任何东西,但如果你配置正确,也可以使用显式对象。谢谢,这就是我的想法。我发现有点难以理解如何传递一个显式对象,因为这些对象是在我的executiontimer类中创建的,而不是通过传递一个新对象。有什么建议可以让我通过一个物体吗?i、 e Stop()在计时器中创建一个条目,并遍历所有计时器拆分的列表,在TimerSplits中为每个拆分创建新条目。您可以将其与它匹配。Is(t=>condition),因为您可能知道timer中字段的值我相信我有答案。它应该是_timerRepository.Verify(x=>x.Insert(It.IsAny());。有人能证明我是用正确的方法做的吗?你可能需要提供更多的上下文。对你可以用它来验证。我喜欢你说的任何东西,但如果你配置正确,也可以使用显式对象。谢谢,这就是我的想法。我发现有点难以理解如何传递一个显式对象,因为这些对象是在我的executiontimer类中创建的,而不是通过传递一个新对象。有什么建议可以让我通过一个物体吗?i、 e Stop()在计时器中创建一个条目,并遍历所有计时器拆分的列表,在TimerSplits中为每个拆分创建新条目。您可以将其与.Is(t=>条件)匹配,因为您可能知道计时器中字段的值
_timerRepository.Verify(x => x.Insert(It.IsAny<Timer>()));