Unité Tester une méthode qui renvoie un vide
Voulais Unité de Tester une méthode dans la Classe suivante
public class DeviceAuthorisationService : IDeviceAuthorisationService
{
private DeviceDetailsDTO deviceDetailsDTO = null;
private IDeviceAuthorisationRepositiory deviceAuthorisationRepositiory;
public DeviceAuthorisationService(IDeviceAuthorisationRepositioryService paramDeviceAuthorisationRepository)
{
deviceAuthorisationRepositiory = paramDeviceAuthorisationRepository;
}
public void AuthoriseDeviceProfile(long paramUserID, string paramClientMakeModel)
{
if (deviceDetailsDTO == null)
GetCellPhoneDetails(userID);
if (deviceDetailsDTO.IsDeviceSelected == false)
throw new SomeCustomExceptionA();
if (deviceDetailsDTO.CellPhoneMakeModel.ToLower() != paramClientMakeModel.ToLower())
throw new SomeCustomExceptionB;
}
public void UpdateDeviceStatusToActive(long userID)
{
if (deviceDetailsDTO == null)
throw new InvalidOperationException("UnAuthorised Device Profile Found Exception");
if (deviceDetailsDTO.PhoneStatus != (short)Status.Active.GetHashCode())
deviceAuthorisationRepositiory.UpdatePhoneStatusToActive(deviceDetailsDTO.DeviceID);
}
private void GetCellPhoneDetails(long userID)
{
deviceDetailsDTO = deviceAuthorisationRepositiory.GetSelectedPhoneDetails(userID);
if (deviceDetailsDTO == null)
throw new SomeCustomException()
}
}
Remarque:
- Nom de la méthode = AuthoriseDeviceProfile retourne void
- La méthode vérifie userSentMakeModel contre celui stocké dans la base de données correspondent à
- Si elle correspond - il renvoie simplement (c'est à dire ne pas modifier l'état)
Comment allons-nous l'unité de tester cette méthode?
- Ont raillé les Pensions de
- Ont couvert le scénario de "THROWS EXCEPTION"
- Question est de savoir comment l'unité de tester le scénario de TOUS s'est BIEN passé ie de l'utilisateur;s makeModel appariés avec dépôt;s makeModel
Toute la conception de suggestions pour faire de ce testable est la plupart de bienvenue
Merci à l'avance.
source d'informationauteur Venu b
Vous devez vous connecter pour publier un commentaire.
Depuis votre méthode void, il a probablement certains des effets secondaires que vous pouvez tester/faire valoir.
Dans votre cas, une option serait de fournir une maquette instance de
IDeviceAuthorisationRepositioryService
. Vous pouvez ensuite vérifier si un appel àUpdatePhoneStatusToActive
qui s'est passé. Voici une solution à l'aide de Moq:Si une méthode est vide, alors il devrait avoir quelque observables côté-effet - sinon c'est inutile. Donc, au lieu de tester la valeur de retour, vous testez les effets secondaires. Dans ce cas, il dirait probablement autour de laquelle les exceptions sont jetés dans quelles situations.
(Ici, "déclenche une exception" est considéré comme un effet secondaire; on pourrait aussi penser que c'est un implicite type de valeur de retour, bien sûr...)
Injecter un moqué de référentiel. Tester si certaines méthodes sur le référentiel sont appelés.
Vous pouvez définir exception de l'espérance sur vos tests unitaires. Dans nUnit, il ressemble à ceci:
Même si votre méthode renvoie la valeur nulle, il doit être en train de faire quelque chose qui est utile pour vous (sinon il serait inutile de la méthode).
À partir de votre code, je devine qu'il y a essentiellement 2 saveurs de "utiles" des choses que l'
AuthoriseDeviceProfile
méthode est en train de faire:GetSelectedPhoneDetails
méthode sur laIDeviceAuthorisationRepositiory
Donc à l'unité de tester la méthode, vous devez faire deux choses qui correspondent à ce:
IDeviceAuthorisationRepositiory
et de l'avoir enregistrer et/ou de faire valoir queGetSelectedPhoneDetails
est appelé