我正在编写单元测试并在尝试从抽象类mock中引发事件时收到异常.以下是示例代码:
public abstract class AbstractBase : EntityObject {} [TestMethod] public void Mytest() { var mock = new Mock<AbstractBase>(); var notificationMock = entityMock.As<INotifyPropertyChanged>(); var propertyChangedMapper = new PropertyChangedMapper(); bool eventReceived = false; propertyChangedMapper.MyPropertyChanged += (sender,eventArgs) => { eventReceived = true; }; propertyChangedMapper.Subscribe((AbstractBase)notificationMock.Object); Assert.IsFalse(eventReceived); notificationMock.Raise(e=>e.PropertyChanged += null,new PropertyChangedEventArgs("Property1")); Assert.IsTrue(eventReceived); }
显然我可以在INotifyPropertyChanged上使用mock并且事件上升很好,但是在PropertyChangedMapper中我需要将发送者强制转换为AbstractBase,如果使用Mock< INotifyPropertyChanged>
编辑:
根据使用Mock的建议.由于<>()似乎是正确的方法,上面唯一的问题是从notificationMock上升的事件与对象的原始模拟无关.码:
notificationMock.Object.PropertyChanged += (s,e) => { var result = "this one is fired as it should"; }; mock.Object.PropertyChanged += (s,e) => { var result = "this one is not called but is actually what I need"; }; notificationMock.Raise(e => e.PropertyChanged += null,new PropertyChangedEventArgs("Property1"));
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。