Temat kontrowersyjny, drażliwy, ale my się nie boimy o takich rozmawiać, a więc testowanie wewnętrznych implementacji które raczej nie mają sensu do bycia wyodrębnionymi (tu bardziej te private niż internale)
public class DoSomething
{
public string PublicAPIDoSomething(string a)
{
var temporary = InternalDoSomething1(a);
return InternalDoSomething2(temporary);
}
private string InternalDoSomething2(string temporary)
{
return "a";
}
internal string InternalDoSomething1(string a)
{
return "b";
}
}
Jakiś lepszy pomysł na dostanie się do w/w metod z poziomu testów poza trikami typu:
[assembly: InternalsVisibleTo("App.Tests")]
lub refleksją?
[Fact]
public void Test1()
{
var d = new DoSomething();
var methodInfo = typeof(DoSomething).GetMethod("InternalDoSomething1", BindingFlags.NonPublic | BindingFlags.Instance);
object[] parameters = { "asd" };
methodInfo.Invoke(d, parameters);
}