Moq для Silverlight не вызывает событие - PullRequest
0 голосов
/ 06 июня 2010

Попытка написать модульный тест для Silverlight 4.0 с использованием Moq 4.0.10531.7

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' ... Вместо этого генерируется та же ошибка ...

Любые мысли приветствуются.

Спасибо

1 Ответ

2 голосов
/ 06 июня 2010

Найдена проблема, мне нужно передать не EventArgs.Empty, а все мои параметры: ObservableCollection AllReadyPlayers, GetSquadDataCompletedEventArgs squadDetails:

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

Извините за неинтересный вопрос.

...