次のインターフェイスとクラスを持っているので、テストをnunitしようとしていますが、テストが失敗し、その理由がわかりません。C#アプリケーションの非同期テストでNUnitテストが予期せず失敗する
[Test]
public async void Test1([Values(200)]int personId)
{
const double expectedResult = 20;
var serviceMock = new Mock<IAccountService>();
var taskCompletion = new TaskCompletionSource<double>();
taskCompletion.SetResult(10);
serviceMock.Setup(x => x.GetAccDetails(It.Is<int>(id => id == personId)))
.Returns(taskCompletion.Task);
var person = new Person(personId, serviceMock.Object);
await person.UpdateBanckingAcc();
double res = person.Amount;
Assert.AreEqual(expectedResult, res);
}
このテストで何が問題になっています:
public interface IService
{
Task<double> GetAccDetails(int personId);
}
public class Person
{
private int _personId;
private IService _service;
public Person(int personId, IService service)
{
_personId= personId;
_service = service;
}
public double Amount {get; set;}
public async Task UpdateBanckingAcc()
{
Amount = await _service.GetAccDetails(_personId);
}
}
そして、これは、ユニットテストはありますか?
「taskCompletion.SetResult(expectedResult);」がおそらく良いでしょう。 – VMAtm
申し訳ありませんが、これは問題ではありません。番号は正しいです。 –
私はあなたのテストを修正した番号で実行し、合格しました。テストが失敗した場合、どのようなエラーが発生しますか? – CodeFuller