, . , 300 , unit test , .
Dice (, "IDiceRoller" ). unit test. . , , , .
:
( )
public interface IDiceRoller
{
int GetValue(int lowerBound, int upperBound);
}
public class DefaultRoller : IDiceRoller
{
public int GetValue(int lowerBound, int upperBound)
{
}
}
public class Dice
{
private static IDiceRoller _diceRoller = new DefaultRoller();
public static void SetDiceRoller(IDiceRoller diceRoller)
{
_diceRoller = diceRoller;
}
public static void Roll(int lowerBound, int upperBound)
{
int newValue = _diceRoller.GetValue(lowerBound, upperBound);
}
}
... unit test:
internal class MockedDiceRoller : IDiceRoller
{
public int Value { get; set; }
public int GetValue(int lowerBound, int upperBound)
{
return this.Value;
}
}
, unit test MockedDiceRoller, , , Dice, , :
MockedDiceRoller diceRoller = new MockedDiceRoller();
diceRoller.Value = 20;
Dice.SetDiceRoller(diceRoller);
Dice.Roll(1, 20);
Assert.IsTrue(Dice.IsCritical);