WillReturnCollectionValuesOf returns stack overflow when messing with based class and inherited class.
Here's the production code:
public interface IViewTest<T> where T: SimpleClass
{
IList<T> SelectedMember { get; }
}
public class MyPresenter<T> where T: SimpleClass
{
public IViewTest<T> MyView
{
get;
private set;
}
public void JustLoop()
{
foreach (SimpleClass sc in MyView.SelectedMember)
{
}
}
}
public class DerivedSimpleClass: SimpleClass
{
}
public abstract class SimpleClass
{
public string ID
{
get;
set;
}
public string Node
{
get
{
throw new NotImplementedException();
}
}
}
Here's the test code:
[Test, Isolated]
public void JustLoopTest()
{
MyPresenter<DerivedSimpleClass> presenter = Isolate.Fake.Instance<MyPresenter<DerivedSimpleClass>>(Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => presenter.MyView).WillReturn(Isolate.Fake.Instance<IViewTest<DerivedSimpleClass>>(Members.ReturnRecursiveFakes));
Isolate.WhenCalled(() => presenter.MyView.SelectedMember).WillReturnCollectionValuesOf(new List<SimpleClass>
{
Isolate.Fake.Instance<DerivedSimpleClass>(Members.ReturnRecursiveFakes)
});
Isolate.WhenCalled(() => presenter.JustLoop()).CallOriginal();
presenter.JustLoop();
}
Stack Overflow exception gets thrown on the line
foreach (SimpleClass sc in MyView.SelectedMember)
{
}
Not sure whether it is related to the previous issue or not, hopefully you can have a test on this :)
________
marijuana news