- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我定义了以下模拟(使用 Moq )。
mockSqlConnection.Setup(x => x.Query<Address>(
It.IsAny<string>(),
null,
null,
true,
null,
null))
.Returns(new List<Address>
{
new Address()
});
和以下验证
mockSqlConnection.Verify(x => x.Query<Address>(
It.IsAny<string>(),
null,
null,
true,
null,
null), Times.Once);
这两个都通过了!太棒了!
然后我有这段代码可以进行实际调用..
var result = sqlConnection.Query<Address>(.....);
然后返回 NULL
。
我不明白为什么总是返回 null,当我在设置中定义时,返回一个包含其中一项的列表。
这在我试运行我的测试时有效。但是当我 Test-DebugRun .. 这是所有这些错误发生的地方! :(
如果我强制 Moq 出错(即使用不正确的验证数量::我期望一次,所以我会说 Never
.. 这就是我对 args 进行硬编码时所说的 .. 或使用 It.IsAny<T>
的..
Moq.MockException
Expected invocation on the mock should never have been performed, but was 1 times: x => x.Query<Address>(It.IsAny<String>(), null, null, True, null, null)
Configured setups:
x => x.Query<Address>(It.IsAny<String>(), null, null, True, null, null), Times.Once
Performed invocations:
IDbExecutor.Open()
IDbExecutor.Query(" -- code snipped --", null, null, True, null, null)
IDbExecutor.Close()
IDisposable.Dispose()
Moq.MockException
Expected invocation on the mock should never have been performed, but was 1 times: x => x.Query<Address>(It.IsAny<String>(), It.IsAny<Object>(), It.IsAny<IDbTransaction>(), It.IsAny<Boolean>(), It.IsAny<Nullable`1>(), It.IsAny<Nullable`1>())
Configured setups:
x => x.Query<Address>(It.IsAny<String>(), null, null, True, null, null), Times.Never
x => x.Query<Address>(It.IsAny<String>(), It.IsAny<Object>(), It.IsAny<IDbTransaction>(), It.IsAny<Boolean>(), It.IsAny<Nullable`1>(), It.IsAny<Nullable`1>()), Times.Once
Performed invocations:
IDbExecutor.Open()
IDbExecutor.Query(" -- sql query snipped --", null, null, True, null, null)
IDbExecutor.Close()
IDisposable.Dispose()
我不明白:(
最佳答案
原因是因为一些参数是硬编码的。如果你想要 new Address()
无论参数如何都返回,试试这个:
参数为 It.IsAny<T>()
允许任何值。如果参数是特定值,则 Setup
将需要该特定值按照您的定义行事。
mockSqlConnection.Setup(x => x.Query<Address>(
It.IsAny<string>(),
It.IsAny<TheType>(),
It.IsAny<TheType>(),
It.IsAny<bool>(),
It.IsAny<TheType>(),
It.IsAny<TheType>()))
.Returns(new List<Address>
{
new Address()
});
你的 Verify
还需要使用 It.IsAny<T>()
为了正确通过:
mockSqlConnection.Verify(x => x.Query<Address>(
It.IsAny<string>(),
It.IsAny<TheType>(),
It.IsAny<TheType>(),
It.IsAny<bool>(),
It.IsAny<TheType>(),
It.IsAny<TheType>(), Times.Once);
关于c# - 为什么这个模拟不起作用,但它验证了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21595434/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!