【发布时间】:2015-06-12 21:17:29
【问题描述】:
我有课
public class NLogRuleComposer : INLogComponentComposer
{
private LoggingConfiguration _nLogLoggingConfiguration;
//TODO: think we need to constructor-inject the logging config
public void ComposeComponent(LoggerModel loggerModel
, LoggingConfiguration nLogLoggingConfiguration
, string loggerFullName)
{
_nLogLoggingConfiguration = nLogLoggingConfiguration;
var ruleName = loggerFullName;
var minimumLevel = LogLevel.FromString(loggerModel.level.min_level);
var maximumLevel = LogLevel.FromString(loggerModel.level.max_level);
var allTargetsWithLayout = nLogLoggingConfiguration.AllTargets.OfType<TargetWithLayout>().ToList();
var targetWithoutStackTrace = allTargetsWithLayout
.FirstOrDefault(x => x.Name.Contains("WithoutStacktrace"));
var targetWithStackTrace = allTargetsWithLayout.FirstOrDefault(x => x.Name.Contains("WithStacktrace"));
CreateDefaultLevelFilter(ruleName, maximumLevel.Name, minimumLevel, targetWithoutStackTrace);
}
public void CreateDefaultLevelFilter(string ruleName, string maximumLevelName
, LogLevel minimumLevel, TargetWithLayout targetWithoutStackTrace)
{
var filter = new ConditionBasedFilter();
filter.Action = FilterResult.Log;
filter.Condition = "(level <= LogLevel." + maximumLevelName + ")";
var loggerRule = new LoggingRule(ruleName, targetWithoutStackTrace);
loggerRule.Filters.Add(filter);
_nLogLoggingConfiguration.LoggingRules.Add(loggerRule);
}
现在我想测试CreateDefaultLevelFilter 方法,但它是无效的。我不知道如何测试它并测试什么。可以使用 Mock 吗?
未完成的代码:
public class NLogRuleComposerUnitTests
{
[Theory]
[InlineData("MyLoggerName")]
public void NLogRuleComposer_Should_Create_A_LoggingRule(
string expectedLogger)
{
var nLogRuleComposerMock = new Mock<INLogComponentComposer>();
var nLogTargetMock = new Mock<TargetWithLayout>();
nLogRuleComposerMock.Setup(x => x.ComposeComponent(It.IsAny<LoggerModel>()
, It.IsAny<LoggingConfiguration>()
, It.IsAny<string>()))
.Verifiable();
}
}
【问题讨论】:
标签: .net unit-testing moq xunit