これをカバーするには2つのテストが必要です。1つはConnect
戻り値true
で、もう1つは戻り値false
です。
[Fact] // or [Test] depending on your testing framework
public void MailServiceConnectsIfCredentialsAreValid()
{
var mockMailService = new Mock<IMailService>();
mockMailService.Setup(x => x.Connect()).Returns(true);
// The rest of your code which will use the mockMailService.Object...
}
[Fact]
public void MailServiceFailsToConnectIfCredentialsAreInvalid()
{
var mockMailService = new Mock<IMailService>();
mockMailService.Setup(x => x.Connect()).Returns(false);
// The rest of your code which will use the mockMailService.Object...
}
テストの目的上、何ICredentials
が合格したかは気にしません。あなたはIMailService.Connect()
それが戻るtrue
か、という2つの可能性をカバーしているだけですfalse
。どちらが発生するかを決定するための実際のロジックは、の実際の実装のテストに存在しますIMailService
。
また、メソッドを破棄してSetCredentials
、に渡すICredentials
こともできConnect
ます。
bool Connect(ICredentials credentials);