【发布时间】:2014-09-05 04:37:28
【问题描述】:
我正在使用测试驱动开发在 Mac OS X 上使用 Xamarin Studio 开发一个简单的应用程序。我使用 NUnit 作为测试工具,使用 FakeItEasy 进行模拟。我开发了一个触发事件的对象,我想测试另一个对象对该事件的响应,但是响应对象似乎从未收到任何在测试中触发的事件。
以下代码说明了问题:
using System;
using NUnit.Framework;
using FakeItEasy;
namespace EventTest
{
public class EventProvider
{
public delegate void EventDelegate(object sender, EventArgs arguments);
public EventDelegate Event;
}
class EventResponder
{
public EventResponder(EventProvider provider)
{
provider.Event += (sender, arguments) => ++EventCount;
}
public uint EventCount { get; private set; }
}
[TestFixture]
public class EventResponderTest
{
[Test]
public void ResponseToFiredEvent()
{
var eventProvider = A.Fake<EventProvider>();
EventResponder responder = new EventResponder(eventProvider);
eventProvider.Event += Raise.WithEmpty().Now;
eventProvider.Event += Raise.WithEmpty().Now;
eventProvider.Event += Raise.WithEmpty().Now;
Assert.AreEqual(3, responder.EventCount);
}
}
}
测试失败,因为 EventCount 为 0。如何使测试通过?
【问题讨论】:
标签: c# unit-testing events fakeiteasy