私はいくつかの非同期タスクのテストにMoqを使用しようとしています。c#moq test非同期タスク
mock.Objectを使用しようとすると、オブジェクト( 'm.Object'が 'Castle.DynamicProxy.Generators.GeneratorException'の例外をスローしました)がスローされ、VSが停止しますデバッグ/実行。
ここでidは、テストの部品番号の道:
: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();
}
ここでは、私がテストしようとしています私の拡張についてはxUnitの
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();
}
}
を使用して伝統的な方法でテストです
再作成のテストに合格しました。最初の問題は、インターフェイスがプライベートであることでした(しかし、それは最小限の例によるものと推測されます)。一度インターフェイスが公開されたすべてのものが成功/合格 – Nkosi
全体の例外メッセージを含める – Nkosi