I am following this intro to unit testing tutorial.
I have not implemented a logic to determine what credit score should return "Maybe", "Declined" but Moq test passes all the Unit Tests.
public interface ICreditDecisionService {
string GetCreditDecision(int creditScore);
}
public class CreditDecision {
ICreditDecisionService creditDecisionService;
public CreditDecision(ICreditDecisionService creditDecisionService) {
this.creditDecisionService = creditDecisionService;
}
public string MakeCreditDecision(int creditScore) {
return creditDecisionService.GetCreditDecision(creditScore);
}
===================================
// Testing Class
[TestFixture]
public class CreditDecisionTests {
//mock instance for dependency
Mock < ICreditDecisionService > mockCreditDecisionService;
CreditDecision systemUnderTest;
[TestCase(100, "Declined")]
[TestCase(549, "Declined")]
[TestCase(550, "Maybe")]
[TestCase(674, "Maybe")]
[TestCase(675, "We look forward to doing business with you!")]
public void MakeCreditDecision_Always_ReturnsExpectedResult(int creditScore, string expectedResult) {
//Arrange
//creating and configuring the mock
mockCreditDecisionService = new Mock < ICreditDecisionService > (MockBehavior.Strict);
mockCreditDecisionService.Setup(p => p.GetCreditDecision(creditScore)).Returns(expectedResult);
systemUnderTest = new CreditDecision(mockCreditDecisionService.Object);
var result = systemUnderTest.MakeCreditDecision(creditScore);
Assert.That(result, Is.EqualTo(expectedResult));
mockCreditDecisionService.VerifyAll();
}
}
I don't have implementation of ICreditDecisionService
, yet Moq test passess! Could you explain what is wrong with these codes.