在下面的代碼中,我需要檢查請求「System」中是否添加了值「Portal」。單元測試存儲庫的請求參數的委託C#,Moq
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沒有公共屬性,我能不能做檢查進一步。是否有任何方法來測試這個或建議?
在單元測試GetAsync沒問題,我需要建議在測試請求。我已經單獨測試測試GetAsync – user3910075
請求並沒有真正做很多。只需調用它的回調函數,看看它是否像預期的那樣修改了'HttpRequestHeaders'。 – Haukinger
正如我所提到的,沒有公開的屬性暴露在RestBaseRequest類中來驗證HttpRequestHeaders – user3910075