我有下面的類和接口NUnit的測試失敗,在C#
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 void UpdateBanckingAcc()
{
Amount = await _service.GetAccDetails(_personId);
}
}
我想寫NUnit測試吧:
[Test]
public async void Test1([Values(200)]int personId)
{
const double expectedResult = 20;
var serviceMock = new Mock<IAccountService>();
//Here I tried both options:
//serviceMock.Setup(s => s.GetAccDetails(It.Is<int>(id => id == personId)))
// .ReturnsAsync(() => expectedResult);
//And:
serviceMock.Setup(s=> s.GetAccDetails(It.Is<int>(id => id == personId)))
.Returns(() => Task.FromResult<double>(personId));
var person = new Person(personId, serviceMock.Object);
person.UpdateBanckingAcc();
double res = person.Amount;
Assert.AreEqual(expectedResult, res);
}
並導致測試失敗。由於一些奇怪的原因,我無法調試它。
所以我看到這裏的問題是呼叫:
person.UpdateBanckingAcc();
應該
await person.UpdateBanckingAcc();
,但如果我用await
關鍵字它不喜歡。
請指教。
還有一個問題:是否有任何具體的測試異步方法的nunit測試,我應該測試,如任務狀態測試等?
你使用的是什麼版本的NUnit?最近的版本應該指出異步無效測試是無效的。 – Charlie