C# 依赖于依赖项异常的单元测试
我继承了一些单元测试,其中ConsumerCreateService依赖于ConsumerGateService。测试断言,如果找不到用户,将引发ConsumerNotFoundException,我唯一的问题是SUT的方法本身没有执行检查并引发异常,这是依赖项ConsumerGetService 测试:C# 依赖于依赖项异常的单元测试,c#,unit-testing,exception,dependencies,C#,Unit Testing,Exception,Dependencies,我继承了一些单元测试,其中ConsumerCreateService依赖于ConsumerGateService。测试断言,如果找不到用户,将引发ConsumerNotFoundException,我唯一的问题是SUT的方法本身没有执行检查并引发异常,这是依赖项ConsumerGetService 测试: public async void Create_Requires_Existing_Consumer() { //Arrange
public async void Create_Requires_Existing_Consumer()
{
//Arrange
var consumerService = await Arrange();
//Act
var consumerReference = new ConsumerReference(Guid.NewGuid().ToString());
Task<Result> Act() => consumerService.Create(consumerReference, new CreateRequest(),
new CreateRequestFlags() { ReturnData = returnData });
//Assert
await Assert.ThrowsAsync<NotFoundException>(Act);
}
我的逻辑是,这不是我正在测试的方法的一部分,因此测试是多余的,因为ConsumerGetService应该有自己的测试。然而,您可能会争辩说,如果ConsumerGetService.Get(按设计)找不到消费者时不再抛出和异常,会发生什么
有什么想法吗?请详细说明您的问题。例如,你使用什么语言?或者,您可以添加单元测试代码,让其他人更清楚地了解您的问题。
public async Task<Result> Create(ConsumerReference consumerReference, CreateRequest value, CreateRequestFlags requestFlags)
{
if (consumerReference == null)
throw new ArgumentNullException(nameof(consumerReference));
if (value == null)
throw new ArgumentNullException(nameof(value));
if (requestFlags == null)
throw new ArgumentNullException(nameof(requestFlags));
var consumer = await _consumerGetService.Get(consumerReference.ConsumerId);
var response = await AddMember(consumer, requestFlags);
_serviceBusCreateService.QueueCreate(_mapper.Map<ServiceBusCreateRequest>(consumer));
switch (requestFlags.ReturnData)
{
case BasicReturnData.All:
var result = _mapper.Map<CreateResult>(response.Data);
return new Result(consumerReference.ConsumerId, result);
case BasicReturnData.None:
return new Result(consumerReference.ConsumerId);
default:
throw new ArgumentOutOfRangeException();
}
}
var consumer = await _consumerRepository.GetActiveOrInactiveById(new ConsumerDocumentId(id));
if (consumer == null || consumer.IsSoftDeleted || consumer.IsScheduledForDeletion)
{
throw new NotFoundException();
}