gpt4 book ai didi

rhino-mocks - 是否可以在 RhinoMocks 中的 Expect.Call 期间设置对象的属性值?

转载 作者:行者123 更新时间:2023-12-04 07:09:32 25 4
gpt4 key购买 nike

我有一个方法,只有在特定对象的属性设置为 false 时才应调用该方法。这是它的初始值。第一次调用后,该属性设置为 true,确保调用只进行一次。

但是,当我模拟执行此更改的类时,模拟对象不会更改底层对象的属性。

有没有办法强制改变对象的属性以响应期望得到满足?

类似于...的东西

Expect.Call(mockedObject.TestMethod(underlyingObject)).NowDoThis(delegate() { underlyingObject.Processed = true; });

最佳答案

是的,

而不是你的 NowDoThis() 调用尝试 Do()

终于回家了,所以我可以尝试一些代码。

诀窍是将匿名委托(delegate)转换为派生自 System.Delegate 的类型 Action(类型 MethodInvoker 也应该工作,但该类型仅在 System.Windows.Forms 中可用)

这是代码。我更喜欢 rhino mocks AAA 语法。让我知道是否必须将其转换为 Expect.Call 语法。我也在使用 xunit.net,[Fact] 只是意味着 [Test]

public interface Thingie
{
bool Flag { get; set; }
void DoSomething();
}

[Fact]
public void Test()
{
var thingie = MockRepository.GenerateStub<Thingie>();

thingie.Stub(x => x.DoSomething()).Do((Action) delegate { thingie.Flag = true; });

Assert.False(thingie.Flag);

thingie.DoSomething();

Assert.True(thingie.Flag);
}

关于rhino-mocks - 是否可以在 RhinoMocks 中的 Expect.Call 期间设置对象的属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/610334/

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