[英]How to 'get arguments for calls made on' a Mock in Pester (or otherwise generate a helpful message containing actual and expected values)?
虽然有许多使用Pester 断言模拟的例子,但是我无法找到关于如何使用Pester获取模拟参数的好(或任何)示例; 这对于获取有意义的错误消息非常有用,而不是具有如此实用性的通用消息:
预期调用-XYZ至少被调用1次,但被调用0次
谢谢,显然; 也许是一个“没有用”的问题。
例如,在RhinoMocks + NUnit(C#)中,可以使用类似于以下内容的代码断言调用mock 并且参数符合某些条件。 如果进行了调用并且参数不匹配,则会显示一条有用的断言消息:
var actual = mock.GetArgumentsForCallsMadeOn(m => ..);
Assert.That(actual, Is.EqualTo(expected));
如何在Pester中完成同样的(或类似的)?
目标是使失败的模拟断言导致有用的错误消息,关于什么特定参数未能达到预期,以及具有什么值。
PowerShell是5.1,而Pester是4.8.1。
关于Pester测试和参数检查,我有同样的问题/疑问; 总是很难找到哪个参数可能在给定的-ParameterFilter
表达式中失败。
它出现在几个GitHub问题中:
但似乎还没有任何解决方案或共识。 如果可以,我会尝试在那里添加对话。
一位用户谈到在Assert-MockCalled
调用中调用Verify函数:
It 'multiple expressions, second line' {
Assert-MockCalled f 1 {
($a -eq 1 | Verify) -and
($b -eq 1 | Verify) -and
($b-1 -eq $a | Verify)
}
}
这提供了更好的输出,但是这是一种hacky / verbose方式。
就个人而言,我的解决方法是编写多个Assert-MockCalled
语句,每个语句都带有一个-ParameterFilter
表达式,该表达式只检查一个参数,这样我就可以根据哪个Assert-MockCalled
语句失败来知道哪个参数失败了。 但是,如果在函数内多次调用mock,这种方法效果不佳。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.