일부 비동기 작업 테스트에 Moq를 사용하려고합니다.C# moq 테스트 비동기 작업
모의 물건을 만들 수 있지만 mock.Object를 사용하려고하면 (Object = 'm.Object'가 'Castle.DynamicProxy.Generators.GeneratorException'예외를 던졌습니다.) VS가 멈 춥니 다. 디버그/실행. 여기
ID 테스트의 MOQ 방법 :
: 여기interface ITestAsync
{
Task<IEnumerable<string>> get();
}
[Fact]
public async Task MoqShouldReturnFIRST()
{
var m = new Mock<ITestAsync>();
m.Setup(q => q.get()).ReturnsAsync(null);
var x = await m.Object.get().FirstIfNotNullOrEmptyAsync();
x.Should().BeNull();
}
는
public class FirstIfNotNullOrEmptyAsyncTests
{
private async Task<IEnumerable<string>> getAll()
{
List<string> x = new List<string>();
x.Add("01");
x.Add("02");
await Task.Delay(1000);
return x;
}
private async Task<IEnumerable<string>> getNull()
{
List<string> x = new List<string>();
x = null;
await Task.Delay(1000);
return x;
}
private async Task<IEnumerable<string>> getEmpty()
{
List<string> x = new List<string>();
await Task.Delay(1000);
return x;
}
[Fact]
public async Task ShouldReturnFIRST()
{
var x = await getAll().FirstIfNotNullOrEmptyAsync();
x.Should().Be("01");
}
[Fact]
public async Task ShouldReturnNULLforNULL()
{
var x = await getNull().FirstIfNotNullOrEmptyAsync();
x.Should().BeNull();
}
[Fact]
public async Task ShouldReturnNULLforEMPTY()
{
var x = await getEmpty().FirstIfNotNullOrEmptyAsync();
x.Should().BeNull();
}
}
내가 시험에 노력하고
내 증축입니다 xUnit의
를 사용하여 전통적인 방법으로 테스트입니다public static async Task<T> FirstIfNotNullOrEmptyAsync<T>(this Task<IEnumerable<T>> obj) where T : class
{
var result = await obj;
return (result != null && result.Any()) ? result?.FirstOrDefault() : null;
}
을 다시 만들어야 테스트를 통과. 초기 문제는 인터페이스가 비공개였습니다 (하지만 최소한의 예 때문에 추측). 인터페이스가 공개되면 모든 것이 작동/성공했습니다 – Nkosi
전체 예외 메시지 포함 – Nkosi