Asumir: VS2010, .NET 4, C#, NUnit, Moqafirmación de una excepción lanzada desde un constructor de objetos mock
Soy nuevo en TDD y me encontré con este problema mientras se trabaja a través de un proyecto.
Teniendo en cuenta la clase:
public abstract class MyFileType
{
public MyFileType(String fullPathToFile)
{
if (!File.Exists(fullPathToFile))
{
throw new FileNotFoundException();
}
// method continues
}
}
Estoy tratando de probarlo con el método:
[Test]
[ExpectedException(typeof(System.IO.FileNotFoundException))]
public void MyFileType_CreationWithNonexistingPath_ExceptionThrown()
{
String nonexistingPath = "C:\\does\\not\\exist\\file.ext";
var mock = new Mock<MyFileType>(nonexistingPath);
}
La prueba falla y NUnit informa de una excepción nunca fue lanzada.
Encontré un section in the NUnit docs hablando de afirmar con excepciones, pero los ejemplos no parecían lo que estoy tratando de hacer. Todavía estoy comenzando con NUnit y Moq, así que puedo estar yendo por este camino equivocado.
ACTUALIZACIÓN:
para ayudar a aclarar por qué este ejemplo se utiliza una clase abstracta, que es la clase base de una serie de tipos de archivo en el que sólo la carga y la eliminación de los datos serían diferir entre tipos de subclases. Mi idea inicial fue poner la lógica para abrir/configurar en una clase base, ya que es la misma para todos los tipos.
No estoy seguro de que esto está directamente relacionado con su problema, pero cambiando su definición de cadena a utilizar el '@ "" 'sintaxis es más fácil de leer y menos propenso a errores. Por ejemplo, en lugar de 'String nonexistingPath =" C: \\ does \\ not \\ exist \\ file.ext ";' puede simplemente poner 'String nonexistingPath = @" C: \ does \ not \ exist \ file \. ext ";' – Thebigcheeze
Gracias por la sugerencia. He incorporado el cambio. – Noren