I have a complex object that I'm trying to fake.
interface IContext
{
User User { get; }
}
A.CallTo(
() => _fakeContext.User.Subscription.Attributes)
.Returns(new List<Attribute>());
But I get the next exception:
The current proxy generator can not intercept the specified method for the following reasons: - Non virtual methods can not be intercepted
All nested types are properties, and they are simple anemic types with get; set;
property modifiers. And when I look into the debugger they all are fakes.
Is there any way to setup the last property of the chain and avoid setuping all previous ones?
If your objects are anemic enough, you might want to give AutoFixture a go:
var fake = A.Fake<>();
var fixture = new Fixture();
// If it's possible [1], AutoFixture will generate entire object graph
var user = fixture.CreateAnonymous<User>();
// Since data will be random [2], you can overwrite properties as you like
user.User.Subscription.Attributes = new List<Attributes>();
A.CallTo(() => fake.User).Returns(user);
.Build
method provides fluent API to customize objects autogeneration, so the randomness can be controlledIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With