【发布时间】:2017-08-29 06:42:11
【问题描述】:
在下面的代码中,我需要检查请求“系统”中是否添加了值“门户”。
var rq = new RestBaseRequest{AmendHeaders = x => x.Add("Systerm", "Portal")};
var repositoryResponse = await this.restRepository.GetAsync(rq,cancellationToken, loggingContext);
RestBaseRequest 类如下所示
public class RestBaseRequest
{
public RestBaseRequest();
public Action<HttpRequestHeaders> AmendHeaders { get; set; }
}
我尝试了如下方式
[Test]
public async Task TestRequestHeaderConatainsRequestingSystem()
{
// Arrange
var restRepository = new Mock<IRestRepository<LifeBondResponse>>();
RestBaseRequest requestBase = null;
CancellationToken token = new CancellationToken();
LoggingContext context = null;
restRepository.Setup(x => x.GetAsync(
It.IsAny<RestBaseRequest>(),
It.IsAny<CancellationToken>(),
It.IsAny<LoggingContext>())).Callback((RestBaseRequest baseRequest, CancellationToken cancellationToken, LoggingContext loggingContext) =>
{
requestBase = baseRequest;
token = cancellationToken;
context = loggingContext;
})
.ReturnsAsync(new Service<LifeBondResponse>
{
Status = GeneralResponseType.Success,
});
var request = new CustomerRequest<InvestmentBondPolicy>
{
TypeOfRequest = CustomerRetrieveType.Number,
Id = "12345",
Data = new Policy()
{
PolicyNumber = "123456",
}
};
var repository = new BondRepository(this.authoriseService.Object, restRepository.Object);
var rs = await repository.GetPolicyAsync(request, new CancellationToken());
}
由于 RestBaseRequest 中没有公共属性,我无法进一步检查。有什么方法可以测试或建议吗?
【问题讨论】:
标签: c# unit-testing tdd moq