1

私は依存するクラスを持っていますTaskCompletionSource

クラスの例は次のようになります。

public ExampleClass
{
    private TaskCompletionSource<string> _tcs;

    public async Task<string> GetFooAsync()
    {
        _tcs = new TaskCompletionSource<string>();
        return await _tcs.Task;
    }

    public void SetFoo(string value)
    {
        _tcs.SetResult(value);
    }
}

テスト フレームワークとしてxUnit.netを使用しています。

[Fact]
public async Task ReturnsString()
{
    // Arrange
    const string value = "test";
    var myclass = new ExampleClass();

    // Act -- Does not work. I don't know how to fix this.
    var result = await myclass.GetFooAsync(); // Won't return before SetFoo is called
    myclass.SetFoo(value); // Needs to be run after GetFooAsync is called

    // Assert
    Assert.Equal(value, result);
}

(コード内のコメントを参照)

4

1 に答える 1