我們使用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