私はこれに従いますintro to unit testingチュートリアル。すべてのMoqテストケースは、ロジックをチェックせずに通過しますか?
私はどのクレジットスコアが "たぶん"、 "辞退"を返すべきかを決定するロジックを実装していませんが、Moqテストはすべてのユニットテストに合格します。
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();
}
}
私はICreditDecisionService
の実装、まだ部品番号テストpassessを持っていません!これらのコードで何が間違っているのか説明できますか?
コードに問題はないようです。実行するように設定したときと同じように実行されます。あなたはモックを使用している理由を実装する必要はありません。テスト中のクラス 'CreditDecision'には' MakeCreditDecision'メソッドをテストするための擬似依存関係が注入されています。 – Nkosi
これは[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のようです。あなたが達成しようとしている究極の目標は何ですか? – Nkosi
私は '' '(creditScore)が" Mabye "..... .....' 'を返す必要がない理由を理解しようとしていました。 Moqを理解すること以外に何も達成しようとしていない。 – DevelopZen