gpt4 book ai didi

c# - 犀牛模拟 : How to match array arguments in an expectation?

转载 作者:行者123 更新时间:2023-12-05 01:48:58 25 4
gpt4 key购买 nike

再次来到 Rhino Mocks Noob 墙

mockUI.Expect( x => x.Update( new Frame[] {Frame.MakeIncompleteFrame(1, 5)} ) );

这是我需要匹配的确切参数。通过跟踪语句,我已经验证这也是实际输出,即代码按预期运行,但测试不同意。 RhinoMocks 响应

TestBowlingScorer.TestGamePresenter.TestStart:
Rhino.Mocks.Exceptions.ExpectationViolationException : IScoreObserver.Update([Frame# 1, Score = 0 Rolls [ 5, PENDING, ]]); Expected #1, Actual #0.

Frame 对象包含很少的属性,但还没有覆盖 Equals()(上面看到覆盖的 ToString())。 Update 接收一个 Frames 数组;我如何设置这个期望?我看到一个 Is.Matching 约束。.不确定如何使用它或者更关心它的冗长性质。

我有一个 NUnit 风格的自定义断言助手

public static void AssertFramesAreEqual(Frame[] expectedFrames, Frame[] actualFrames)
{
// loop over both collections
// compare attributes
}

最佳答案

@Gishu,是的,就是这样。我刚刚还了解了 Arg<> 静态类,它应该允许您执行如下操作:

mockUI.Expect( x => x.Update(Arg<Frame[]>
.Matches(fs=>HelperPredicates.CheckFrames ( expected, fs)) ));

还有 Arg<>.List 配置起点,我还没有探索过,但可能会更好地满足您的需求

关于c# - 犀牛模拟 : How to match array arguments in an expectation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com