xUnit: как утверждать другое событие типов, чем EventHandler <EventArgs> - PullRequest
0 голосов
/ 23 октября 2018

Я новичок в модульном тестировании, и я искал в сети пару часов и до сих пор не могу найти ответ на свой простой вопрос.

У меня есть класс сследующее событие:

event Action<ITagData> OnTagHandled

Теперь я хочу написать модульный тест, чтобы подтвердить, что событие было инициировано, но когда я пишу что-то вроде:

Assert.Raises<EventArgs>(handler => m_rssiHander.OnTagHandled += handler,
    handler => m_rssiHander.OnTagHandled -= handler, () => { });

, я получаю ошибку вроде:

Невозможно неявно преобразовать тип System.EventHandler в System.Action

Может кто-нибудь сказать мне, как я могу утверждать событие типа Action<T>?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Наконец-то я решил сделать это так:

 bool wasEventRaised = false;
 m_rssiHandler.OnTagHandled += data => { wasEventRaised = true;};

 // Act
 m_rssiHandler.ProcessTag(m_tag);

 // Assert
 Assert.True(wasEventRaised);
0 голосов
/ 24 октября 2018

Это потому, что handler является типом EventHandler<EventArgs>, поэтому m_rssiHander.OnTagHandled += handler не будет работать

, вам придется изменить: event Action<ITagData> OnTagHandled

TO event Action<EventArgs> OnTagHandled для этого наработать или любой дочерний класс EventArgs и наследовать интерфейс ITagData

например

class TagDataEventArgs: EventArgs, ITagData {}

и использовать его как: event Action<TagDataEventArgs> OnTagHandled

И утверждать:

Assert.Raises<TagDataEventArgs>(handler => m_rssiHander.OnTagHandled += handler,
        handler => m_rssiHander.OnTagHandled -= handler, () => { });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...