with unit setup property objetos mocks mock c# unit-testing mocking moq

c# - setup - unit testing with mocks



Cómo realizar una prueba unitaria del caso predeterminado de una instrucción de cambio basada en enumeración (3)

Intenta lo siguiente

Assert.IsFalse(Enum.IsDefined(typeof(EnumType), Int32.MaxValue); Create((EnumType)Int32.MaxValue);

Es cierto que cualquier valor que elija para el caso "predeterminado" podría algún día convertirse en un valor válido. Así que simplemente agregue una prueba para garantizar que no esté en el mismo lugar donde verifique el valor predeterminado.

Tengo una declaración de cambio en una fábrica que devuelve un comando basado en el valor de la enumeración pasada. Algo como:

public ICommand Create(EnumType enumType) { switch (enumType) { case(enumType.Val1): return new SomeCommand(); case(enumType.Val2): return new SomeCommand(); case(enumType.Val3): return new SomeCommand(); default: throw new ArgumentOutOfRangeException("Unknown enumType" + enumType); } }

Actualmente tengo un caso de cambio para cada valor en la enumeración. Tengo pruebas unitarias para cada uno de estos casos. ¿Cómo hago una prueba unitaria de que el caso predeterminado arroja un error? Obviamente, en este momento no puedo pasar a un EnumType desconocido, pero ¿quién puede decir que esto no cambiará en el futuro? ¿Hay alguna forma en que pueda extender o burlar al EnumType solo por el bien de la prueba de la unidad?


Puede convertir el tipo subyacente de la enumeración al tipo de enumeración, para crear un valor "no válido".

Create((EnumType)200);


Puede emitir un valor incorrecto para su tipo de enumeración, esto no se comprueba. Así que si Val1 a Val3 son 1 a 3, por ejemplo, pase:

(EnumType)(-1)