以下のコードでは、リクエスト "System"に "Portal"という値が追加されているかどうかを確認する必要があります。ユニットテストリポジトリのリクエストパラメータの代理人C#、Moq
var rq = new RestBaseRequest{AmendHeaders = x => x.Add("Systerm", "Portal")};
var repositoryResponse = await this.restRepository.GetAsync(rq,cancellationToken, loggingContext);
RestBaseRequestクラスは、私はRestBaseRequestにはパブリックプロパティが存在しないので、私はチェックを行うことができませんでし
[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());
}
以下のような方法を試してみました
public class RestBaseRequest
{
public RestBaseRequest();
public Action<HttpRequestHeaders> AmendHeaders { get; set; }
}
以下のようになります。さらにこれをテストする方法はありますか? GetAsync
が要求
Portal
最初にSystem
に追加することを確認し、別の1にコールバックを呼び出していることをチェック
- 1:
ユニットテストGetAsyncで問題ありません、私は提案を必要としませんリクエストをテストしています。私はすでにGetAsyncをテストするためのテストを別にしています。 – user3910075
リクエストは本当に多くありません。そのコールバックを呼び出して、期待どおりに 'HttpRequestHeaders'を変更するかどうか確認してください。 – Haukinger
私が言及したように、HttpRequestHeadersを確認するためにRestBaseRequestクラスに公開されているパブリックプロパティはありません – user3910075