Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормальноC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормально

Сообщение Anonymous »

проблема
во время написания тестов для приложения .net 8 и moq 4.20.72 (та же ситуация в .net 9).
Я обнаружил, что во время вызова события VaccumpumtivativationEvent с

Код: Выделить всё

mockCommunicator.Raise(e => e.VaccumPumpActivationEvent += null, 1, true);
< /code>
Все работает нормально, но когда я использую < /p>
await mockCommunicator.RaiseAsync(e => e.VaccumPumpActivationEvent+= null, 1, true);
.raiseasync () создает исключение, вероятно, из -за Moqframework:

Код: Выделить всё

Mock.RaiseEventAsync -> (Task)Mock.RaiseEvent(mock, expression, parts, arguments);
и Raiseevent имеет филиал, которая может вернуть Null .
Так что здесь есть какая -то разница в. Пример
App Project
public class WorkingClass
{
private readonly ICommunicator _Communicator;

public WorkingClass(ICommunicator kommunikator)
{
this._Communicator = kommunikator;
this._Communicator.VaccumPumpActivationEvent += this.Event_VaccumPumpActivation;
}

private void Event_VaccumPumpActivation(int nummer, bool istAktiviert)
{
Console.WriteLine($"EventFired with {nummer}, and {istAktiviert}");
}
}

public delegate void VaccumPumpActivationDelegate(int nummer, bool istAktiviert);

public interface ICommunicator
{
public event VaccumPumpActivationDelegate VaccumPumpActivationEvent;
}
< /code>
Проект тестирования: < /pbr />






< /code>
using Moq;

namespace ConsoleAppBastelProjekt.UnitTests;

[TestClass]
public sealed class Test1
{
[TestMethod]
public async Task TestMethod1()
{
Mock mockCommunicator = new Mock();
WorkingClass proband = new WorkingClass(mockCommunicator.Object);

await mockCommunicator.RaiseAsync(e => e.VaccumPumpActivationEvent += null, 1, true);
}
}
< /code>

system.nullreexexception

hresult = 0x80004003

message = object rewrest /> StackTrace: < /p>
bei consoleappbastelprojekt.unittests.test1.d__0.movenext () в d: \ git \ oreverserepos \ consoleappbastelprojekt \ consoleappbastelprojekt.unittests \ test1.cs: zeile16. /> < /blockquote>

Подробнее здесь: https://stackoverflow.com/questions/796 ... works-fine
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»