【问题标题】:Moq for Silverlight doesn't raise eventSilverlight 的起订量不会引发事件
【发布时间】:2010-06-06 19:04:05
【问题描述】:

尝试使用 Moq 4.0.10531.7 为 Silverlight 4.0 编写单元测试

public delegate void DataReceived(ObservableCollection<TeamPlayerData> AllReadyPlayers, GetSquadDataCompletedEventArgs squadDetails);

public interface ISquadModel : IModelBase
{
    void RequestData(int matchId, int teamId);
    void SaveData();

    event DataReceived DataReceivedEvent;
}

void MyTest()
{
    Mock<ISquadModel> mockSquadModel = new Mock<ISquadModel>();
    mockSquadModel.Raise(model => model.DataReceivedEvent += null, EventArgs.Empty);
}

收到以下错误,而不是引发“DataReceivingEvent”:

“Castle.Proxies.ISquadModelProxy”类型的对象无法转换为“System.Collections.ObjectModel.ObservableCollection`1[TeamPlayerData]”类型。

为什么要尝试将模拟转换为执行第一个事件参数的类型?

如何发起活动?

我也尝试过另一种方法:

mockSquadModel
            .Setup(model => model.RequestData(TestMatchId, TestTeamId))
            .Raises(model => model.DataReceivedEvent += null, EventArgs.Empty)
            ;

如果有人调用“Setup”方法,这应该引发事件...相反会产生相同的错误...

欢迎提出任何想法。

谢谢

【问题讨论】:

    标签: silverlight unit-testing silverlight-4.0 moq


    【解决方案1】:

    发现一个问题,我需要传递的不是EventArgs.Empty,而是我所有的参数:ObservableCollection AllReadyPlayers、GetSquadDataCompletedEventArgs 小队详情:

            mockSquadModel
                .Setup(model => model.RequestData(TestMatchId, TestTeamId))
                .Raises(model => model.DataReceivedEvent += null, players, squadDetails);
                ;
    

    很抱歉提出了无趣的问题。

    【讨论】:

      猜你喜欢
      • 2017-02-19
      • 2017-02-19
      • 1970-01-01
      • 2011-11-14
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多