【发布时间】:2018-09-06 00:33:48
【问题描述】:
我最近开始对 c# 代码进行单元测试,但我之前从未测试过控制器类。我有以下课程,我需要为此编写测试用例。
namespace nH.MasterData.API.Controllers
{
[Produces("application/json")]
[Route("api/AType")]
public class ATypeController : Controller
{
private readonly IProcessor _domain;
private readonly ILogger _logger;
private const string Version = "VERSION_1";
private const string Model = "model";
private const string Entity = "AType";
public ATypeController(IProxy proxy, ILogger<ATypeController> logger)
{
_logger = logger;
var proxy = proxy.GetProxy();
_domain = new InstitutionAddressProcessor(proxy);
}
[HttpGet]
public OkObjectResult Get()
{
try
{
return Ok(_domain.GetATypesMembers(Model, Version, Entity, MemberType.Leaf, null));
}
catch (Exception ex)
{
_logger.LogError(ex.Message + " " + ex.StackTrace);
return new OkObjectResult(BadRequest());
}
}
}
}
这里,_domain.GetATypesMembers() 不在我的项目中,我也没有显式创建_domain 的对象(它是在构造函数中创建的)。如何控制在构造函数中创建的对象?这样我就可以在调用时模拟响应而无需实际调用。
通常,我会将setup 模拟为wcfMockService.Setup(x => x.GetATypesMembers(...).ReturnAsync(response);,但是我该如何为这个对象编写呢?
感谢任何建议。
编辑1: 在构造函数中创建对象是不好的做法。但这是一个遗留代码,并在许多地方使用。所以我只是想在代码存在时编写测试。
【问题讨论】:
标签: c# api controller nunit moq