Я пишу модульный тест, когда мой компьютер получает / делает телефонный звонок.
Тестируемые методы - это события, которые обрабатывают входящий / исходящий вызов. Если вызывающий абонент не является утвержденным, вызов отклоняется.
Код работает нормально, но я не могу найти ничего, с чем можно было бы проверить мой модульный тест. Проблема в том, что фактическое состояние «если мой компьютер находится в состоянии вызова или нет» - это , а не , контролируемое моим классом. Только компьютер знает, подключен ли вызов в данный момент или нет.
Я надеюсь, что есть несколько Гуру модульных тестов, которые подскажут мне, что делать, чтобы протестировать этот сценарий. Я не хочу создавать фиктивную переменную, которая не имеет отношения к моему коду, просто чтобы пройти мой модульный тест.
Чтобы сделать это немного конкретнее, вот мой модульный тест:
private DeviceMediator deviceMediator;
private IDeviceControlForm deviceControlForm;
private IDataAccess data;
private ICallMonitor callMonitor;
// Use TestInitialize to run code before running each test
[TestInitialize()]
public void MyTestInitialize()
{
deviceControlForm = MockRepository.GenerateStub<IDeviceControlForm>();
data = MockRepository.GenerateStub<IDataAccess>();
callMonitor = MockRepository.GenerateStub<ICallMonitor>();
deviceMediator = new DeviceMediator(deviceControlForm, data)
{CallMonitor = callMonitor};
}
[TestMethod]
public void TestHandleIncomingCall()
{
//Arrange
//Act
deviceMediator.OnIncomingCall(null, new CallState(),
new CallInfoState());
//Assert
// I could not find anything to feasably test on this.
Assert.IsTrue(true);
}
и вот метод, который он вызывает:
public void OnIncomingCall(Call call, CallState callState,
CallInfoState callInfoState)
{
// See if this call is on our list of approved callers
bool callApproved = false;
foreach (PhoneContact phoneContact in Whitelist)
{
if (phoneContact.PhoneNumber == call.CallerID)
callApproved = true;
}
// If this is not an approved call then
if (!callApproved)
CallMonitor.Hangup();
}