我们使用OpenCover
我们的解决方案的测试覆盖率和我注意到,如何确认是否发生了什么?
public async Task Build(ProcessorContext context)
{
context.ResultBetSlip.Bets.Clear();
// Here OpenCover tells me that I need to cover two branches
// so I assume I need to verify that GetAvailablePlugins can be empty and
// no Build method was called.
// How do I do that?
foreach (var plugin in _pluginFactory.GetAvailablePlugins())
{
await plugin.Build(context);
}
}
现在我的测试看起来像
[Test]
public async Task Build_ShouldntEnterForeachWhenThereAreNoPluginsRegistered()
{
// Arrange
var pluginFactoryMock = new Mock<IBetSlipProcessorServicePluginFactory>();
var sut = new BetSlipProcessorService(pluginFactoryMock.Object);
pluginFactoryMock
.Setup(pf => pf.GetAvailablePlugins())
.Returns(new List<IBetSlipProcessorServicePlugin>());
// Act
await sut.Build(AutoFixtureSimplified.Create<ProcessorContext>());
// Assert
???
}
应我甚至考虑测试这种情况下,如果它是可能的吗?
编辑:
按照要求,这是测试覆盖率报告:
在这里你可以找到所有我为了达到这样的报道做测试的要点。 https://gist.github.com/kuskmen/df3f112b2b6d880741ee6ab559d64d53
你有没有测试过它的项目? – Nkosi
是的,但'OpenCover'告诉我需要在那里再覆盖一个分支。 – kuskmen
那么只需验证是否调用了'GetAvailablePlugins'。 – Nkosi