【发布时间】:2020-03-19 09:35:53
【问题描述】:
我不确定我的方法 TranslateResponse() 还可以测试什么。
它基本上检查翻译器的类型并调用翻译器的关联set()方法。
public async Task TranslateResponse(Policy response)
{
foreach (var t in await _translatorFactory.BuildTranslators())
{
var policyTranslator = t as IPolicyAwareTranslator;
policyTranslator?.SetPolicy(response);
var additionalInterestTranslator = t as IAdditionalInterestAwareTranslator;
additionalInterestTranslator?.SetAdditionalInterests(response.AdditionalInterests);
var locationsTranslator = t as ILocationsAwareTranslator;
locationsTranslator?.SetLocations(response.Locations);
}
}
我正在为TranslateResponse() 方法编写测试用例。据我所知,我正在验证对相应方法的调用是否基于提供的翻译器类型发生。
测试用例行
Mock<ITranslator> mockedTranslator = new Mock<ITranslator>();
mockedTranslator.Setup(t => t.Translate(_translatorDataAccessor.Object));
var mockedPolicyTranslator = mockedTranslator.As<IPolicyAwareTranslator>();
mockedPolicyTranslator.Setup(t => t.SetPolicy(It.IsAny<Policy>()));
mockedPolicyTranslator.Verify(t => t.SetPolicy(It.IsAny<Policy>()), Times.AtLeastOnce);
我的担忧是
我很想知道我是否可以测试比验证调用更多的东西?
我应该在这里测试 set() 方法的逻辑还是在它自己的类中测试?甚至,我无法弄清楚在
Set()的测试用例中要断言什么,它将使用传入的参数设置私有字段。
public class PolicyTranslator : ITranslator, IPolicyAwareTranslator
{
private Policy _policy;
public void SetPolicy(Policy policy)
{
_policy = policy;
}
//translate()
}
【问题讨论】:
标签: c# unit-testing mocking moq xunit.net