是的,
而不是你的 NowDoThis() 调用尝试 Do()
终于回家了,所以我可以尝试一些代码。
诀窍是将匿名委托转换为派生自 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);
}