c# - RegisterType results in an error -
hi trying set testing project in order pratis bit of unit testing while using unity ioc container , moq.
i seem getting error when try register type in unity.this code:
public static class setupmockobjects { public static iproductrepository getproductrepository() { mock<iproductrepository> productrepository = new mock<iproductrepository>(); productrepository.setup(m => m.products).returns(new list<product> { new product { name = "football" , price = 25 }, new product { name = "surf board" , price = 179 }, new product { name = "running shoes" , price = 95 } }); return productrepository.object; } } public static void initialise() { var container = buildunitycontainer(); dependencyresolver.setresolver(new unitydependencyresolver(container)); } private static iunitycontainer buildunitycontainer() { var container = new unitycontainer(); container.registertype<iproductrepository , setupmockobjects.getproductrepository()>(); return container; } now creating mock object here because not want create data access layer figured easier create mock object.
the problem inside buildunitycontainer() method when try register type errors:
error 1 invalid expression term ',' error 2 ; expected error 3 ; expected error 4 invalid expression term ')' error 5 ) expected i prety sure calling registertype right generic parameters thats why not understand why these errors thrown.where have made mistake?
you're trying use setupmockobjects.getproductrepository() type argument. that's not going work - type arguments have names of types (or type parameters). suspect meant use regular argument:
container.registerinstance<iproductrepository>(setupmockobjects.getproductrepository()); or perhaps more readably:
var repository = setupmockobjects.getproductrepository(); container.registerinstance<iproductrepository>(repository); or if type inference works (i don't have docs in front of me check declaration) use:
container.registerinstance(setupmockobjects.getproductrepository()); after all, return type of method same type argument want specify.
note i've changed call registertype registerinstance you're trying bind interface specific instance.
Comments
Post a Comment