I\'m writing unit tests for ASP.NET MVC controller methods.
Those controllers have a dependency on IMapper
- an interface I\'ve created to abstract AutoMapp
I could tend to agree with #2. You know automapper works, you know your injection works ( got tests for that right? :-) ) I would focus more on specifics, things that aren't just SomeClass.Property = AnotherClass.Property -- THOSE special cases should be tested not basic copy functions. Don't test framework stuff.
As for more test code - I feel that's completely ok. Tests should be setup within the given tests (also within reason) for just that given unit.
Regarding Moq, syntax is easy, don't overthink it. var obj = new Mock(); then set your properties like obj.Setup(x => x.Property).returns("hello") unless you have a more specific issue? Moq also has setup all properties on it as well, so you may not even need automapper
-edit- found it, it's obj.SetupAllProperties();
I'm in favour of #2 like jeriley
Adding to the Moq, if you need to return an object based on values passed to it you can write your setup like so:
mockObject.Setup(x => x.MapObject(It.IsAny()) .Returns((ProductDto productDto) => { var product = new Product() { Id = productDto.Id, Name = productDto.Name }; return product });
Little bit messy but handy.