【发布时间】:2015-06-01 12:08:20
【问题描述】:
我想开始模拟一些代码,但我不确定如何去做。我已经阅读了一些教程,但我无法将它应用到我的代码中(这背后可能有一个原因)。 我正在使用 NUnit 和起订量。 (我已经删除了所有其他方法,所以我只给你看一个)。
API接口:
public interface IApiRequest
{
Task<T> ExecuteAsync<T>(RestRequest request);
}
我想模拟的方法:
public async Task<UpcomingMovies> GetUpcomingMovies(int page)
{
var request = new RestRequest
{
Resource = "movie/upcoming",
};
request.AddParameter("page", page.ToString());
request.AddParameter("language", "en");
var api = new ApiRequest();
return await api.ExecuteAsync<UpcomingMovies>(request);
}
我不确定如何模拟这个。
更新:
现在这是一个有效的测试吗?
Mock<IApiRequest> mock = new Mock<IApiRequest>();
mock.Setup(x => x.ExecuteAsync<UpcomingMovies>(It.IsAny<RestRequest>()))
.Returns(Task.FromResult<UpcomingMovies>(new UpcomingMovies()));
【问题讨论】:
-
你不应该新建你的 api,因为你不能在测试中模拟它。最好传入构造函数,这样在你的测试中你可以传入模拟。
标签: c# unit-testing mocking nunit moq