O que é Mock? |
Sumário
Como mockar uma classe em C# .NET ?
Mock é uma técnica para simular o comportamento de estruturas de programação. A utilização desta técnica é fundamental para a validação do layout do código sem afetar ou depender o ambiente em questão.O termo Mock vem do ingles e significa algo como imitação, zombaria, falsidade.
A seguir pode-se ver um exemplo de classe. Este exemplo refere-se ao código de uma aplicação que guarda um arquivo texto em um local temporário da maquina. A classe Archiver implementa a interface IArchiver. Ela é especialmente útil para que seja possível mockar esta classe.
namespace Anselme.Mock
{
public class Archiver : Anselme.Mock.IArchiver
{
public ArchiverState Save(string filename, string file)
{
public string Load(string filename)
{
}
}
A inteface IArchiver, como eu disse, é um requisito para que eu possa testar unitariamente esta classe com Mock. A seguir, veja o código dela.
namespace Anselme.Mock
{
public interface IArchiver
{
string Load(string filename);
ArchiverState Save(string filename, string file);
}
}
Note que o método Save possui um retorno do tipo ArchiverState. Este ArchiverState é uma Enumeração. Ela foi utilizada intensionalmente para gerar algum retorno nesta classe para que ela possa ser testada unitariamente sem a necessidade de verificar se o arquivo está armazenado no disco. Segue o código da enumeracao ArchiverState.
namespace Anselme.Mock
{
public enum ArchiverState
{
Saved
}
}
O que é MOQ?
Como funciona o Teste unitário com Mock, utilizando o Framework MOQ?
{
[TestClass()]
public class ArchiverTest
{
[TestMethod()]
public void Salvando_Um_Arquivo_Com_Texto_Pequeno()
{
string filename = string.Format(“{0}.{1}”,TestUtil.CreateRandomString(5), TestUtil.CreateRandomString(3));
string file = TestUtil.CreateRandomString(5);
var target = new Mock
target.Setup
.Returns(ArchiverState.Saved);
IArchiver target_mock = target.Object;
ArchiverState state = target_mock.Save(filename, file);
Assert.AreEqual
}
Principais linhas comentadas
.Returns(ArchiverState.Saved);
Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.
Em vez de var target = new Mock(); deveria ser var target = new Mock();
Abs
que imagem horrível