【问题标题】:Assert that a mocked (MOQ thus DynamicProxy) event has no handlers attached断言模拟(MOQ 因此 DynamicProxy)事件没有附加处理程序
【发布时间】:2012-09-13 13:25:13
【问题描述】:

这很简单(ish),事件是“真实的”,就像现在由 DynamicProxy 创建的一样,但我无法为模拟事件解决任何问题。

解释我想要实现的最佳方法是使用代码,请参阅测试方法中的注释行:

using System;
using Moq;
using NUnit.Framework;

namespace MOQTest
{
 [TestFixture]
    public class EventsMoqTest
    {
        [Test]
        public void DetachTest()
        {
            var hasEventMock = new Mock<IHasEvent>();

            using (var observer = new Observer(hasEventMock.Object))
            {
                 //Assert that hasEventMock.Object has handler attached
            }

            //Assert that hasEventMock.Object DOES NOT have handler attached
        }
    }

    public interface IHasEvent
    {
        event EventHandler AnEvent;
    }

    public class Observer : IDisposable
    {
        private readonly IHasEvent _hasEvent;
        private readonly EventHandler _hasEventOnAnEvent;

        public Observer(IHasEvent hasEvent)
        {
            _hasEvent = hasEvent;

            _hasEventOnAnEvent = _hasEvent_AnEvent;
            _hasEvent.AnEvent += _hasEventOnAnEvent;
        }

        void _hasEvent_AnEvent(object sender, EventArgs e)
        {}

        public void Dispose()
        {
            _hasEvent.AnEvent -= _hasEventOnAnEvent;
        }
    }   
}

【问题讨论】:

    标签: events moq


    【解决方案1】:

    不幸的是,你不能。这不是真正的起订量问题,而是 C# event 关键字与委托一起使用的方式。请参阅this SO answer 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      相关资源
      最近更新 更多