我正在爲我的計算機接收/撥打電話時編寫單元測試。計算機擁有國家的單元測試
正在測試的方法是處理傳入/傳出呼叫的事件。如果主叫方不是經批准的主叫方,則該呼叫將被拒絕。
該代碼工作正常,但我真的找不到任何東西來測試我的單元測試。問題在於,「如果我的電腦在通話中」的實際狀態是而不是我按班級控制。只有電腦知道電話當前是否連接。
我希望有一些單元測試大師在那裏可以告訴我該做什麼來測試這種情況。我不想創建一個與我的代碼無關的虛擬變量,只是爲了讓我的單元測試通過。
爲了使這個多一點具體的,這裏是我的單元測試:
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();
}
你能對你的來電詳談,CallState和CallInfoState類呢? – bryanbcook
在rhis情況下,他們什麼都不做。在真正的通話中,他們將擁有通話信息和處理通話。我使用它們是爲了獲得當前的呼叫者號碼(我剛剛意識到我沒有投入到我的單元測試中)。它們不會被其他東西讀取,所以我不能用它們來取回一個值(而且它們不是通過引用傳遞的) – Vaccano