diff --git a/src/Moq.Tests/EventHandlersFixture.cs b/src/Moq.Tests/EventHandlersFixture.cs index 0338573bf..e08965d40 100644 --- a/src/Moq.Tests/EventHandlersFixture.cs +++ b/src/Moq.Tests/EventHandlersFixture.cs @@ -179,11 +179,29 @@ public async Task Can_raise_parameterized_async_event_using_RaiseAsync() Assert.Equal(42, received); } - public class HasAsyncEvent + [Fact] + public async Task RaiseAsync_WithVoidEventDelegate_ThrowsArgumentOutOfRangeException() { -#pragma warning disable CS0067 // Event never used - public virtual event Func Event; - public virtual event Func ParameterizedEvent; + //Arrange + var mock = new Mock(); + + await Assert.ThrowsAnyAsync(async () => await mock.RaiseAsync(e => e.CustomEvent += null, "foo", 5)); } + } } + +public delegate void CustomEvent(string message, int value); + +public interface IWithEvent +{ + event CustomEvent CustomEvent; + +} + +public class HasAsyncEvent +{ +#pragma warning disable CS0067 // Event never used + public virtual event Func Event; + public virtual event Func ParameterizedEvent; +} diff --git a/src/Moq.Tests/Moq.Tests.csproj b/src/Moq.Tests/Moq.Tests.csproj index 5649a70cd..ea5497014 100644 --- a/src/Moq.Tests/Moq.Tests.csproj +++ b/src/Moq.Tests/Moq.Tests.csproj @@ -28,7 +28,7 @@ - + diff --git a/src/Moq/Mock`1.cs b/src/Moq/Mock`1.cs index d9e697875..54652eb71 100644 --- a/src/Moq/Mock`1.cs +++ b/src/Moq/Mock`1.cs @@ -1423,6 +1423,7 @@ public void Raise(Action eventExpression, params object[] args) /// public Task RaiseAsync(Action eventExpression, params object[] args) { + if (eventExpression.Method.ReturnType == typeof(void)) throw new ArgumentOutOfRangeException(nameof(eventExpression), "The event expression must return Task or ValueTask."); return Mock.RaiseEventAsync(this, eventExpression, args); }