Lançamento Do Typemock Isolator 5.1
Esta versão adiciona o suporte para métodos estáticos e metódos não públicos à API AAA. Vejam as notas de lançamento.
Não me agrada muito a aproximação reflectiva ao teste de membros privados.
Com as novas adicões à API AAA, testar esta classe:
public class MyClass
{
public string Public()
{
return this.Private();
}
private string Private()
{
throw new NotImplementedException();
}
}
pode ser feito assim:
[TestMethod]
[Isolated]
public void PrivateTest()
{
MyClass fake = Isolate.Fake.Instance<MyClass>();
Isolate.WhenCalled(() => fake.Public()).CallOriginal();
Isolate.NonPublic.WhenCalled(fake, "Private").WillReturn("FAKE");
string fakePublic = fake.Public();
Assert.AreEqual("FAKE", fakePublic);
Isolate.Verify.WasCalledWithExactArguments(() => fake.Public());
Isolate.Verify.NonPublic.WasCalled(fake, "Private");
}
Agradava-me mais que fosse assim:
[TestMethod]
[Isolated]
public void PrivateTest()
{
MyClass fake = Isolate.Fake.Instance<MyClass>();
MyClass_Accessor fakeAccessor = MyClass_Accessor.AttachShadow(fake);
Isolate.WhenCalled(() => fakeAccessor.Private()).WillReturn("FAKE");
Isolate.WhenCalled(() => fake.Public()).CallOriginal();
string fakePublic = fake.Public();
Assert.AreEqual("FAKE", fakePublic);
Isolate.Verify.WasCalledWithExactArguments(() => fake.Public());
Isolate.Verify.WasCalledWithExactArguments(() => fakeAccessor.Private());
}
Parece a mesma coisa mas não há nomes de métodos no código de teste.
Eles conseguiram fazê-lo para os Natural Mocks. Certamente que o conseguirão fazer para AAA.