J'écris un test unitaire pour savoir quand mon ordinateur reçoit/passe un appel téléphonique.Tests unitaires avec les états informatiques
Les méthodes testées sont les événements qui gèrent l'appel entrant/sortant. Si l'appelant n'est pas un appelant approuvé, l'appel est rejeté.
Le code fonctionne bien, mais je ne peux pas vraiment trouver quelque chose à tester pour mon test unitaire. Le problème est que l'état actuel de "si mon ordinateur est dans un appel ou non" est pas contrôlé par ma classe. Seul l'ordinateur sait si un appel est actuellement connecté ou non. Je souhaite qu'il y ait un certain Guru Unit Test là-bas que peut me dire quoi faire pour tester ce scénario. Je ne veux pas créer un var dummy qui n'a aucun rapport avec mon code juste pour faire passer mon test d'unité.
Pour faire cela un peu plus concret, voici mon test unitaire:
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);
}
et est ici la méthode qu'il appelle:
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();
}
Pouvez-vous préciser ce que votre appel, les cours CallState et CallInfoState faire? – bryanbcook
Dans ce cas, ils ne font rien. Lors d'un appel réel, ils auraient l'information d'appel et l'appel. Je les utilise pour obtenir le numéro de l'appelant actuel (que je viens de réaliser, je ne me nourris pas dans mon test d'unité). Ils ne sont lus par rien d'autre, donc je ne pouvais pas les utiliser pour récupérer une valeur (et ils ne sont pas transmis par référence) – Vaccano