asp.net web api - Creating testcases using nunit and moq on WEB API controllers -
i trying create unit test cases using nunit on controllers in existing web api project. using moq mocking framework. in here mock repository return expected result.i not sure can @ point of setting of repository mockup , validating result. can suggest if whatever doing right ? took random controller question. advise or guidance example url appreciated.
[testcase] public void testmethod1() { accountcontroller ac = new accountcontroller(); var mockauthrepository = new mock<authrepository>(); //mockauthrepository.setup(m=>m.registeruser(it.isany<usermodel>)) } [routeprefix("api/account")] public class accountcontroller : apicontroller { private readonly authrepository _repo; public accountcontroller() { _repo = new authrepository(); } } [httppost] [authorize(users = "admin")] [route("register")] public async task<ihttpactionresult> register(usermodel usermodel) { identityresult result = await _repo.registeruser(usermodel); ihttpactionresult errorresult = wraperror(result); if (errorresult != null) { return errorresult; } return ok(); } private ihttpactionresult wraperror(identityresult result) { if (result == null) { return internalservererror(); } if (!result.succeeded) { if (result.errors != null) { foreach (string err in result.errors) { modelstate.addmodelerror("", err); } } if (modelstate.isvalid) { return badrequest(); } return badrequest(modelstate); } return null; }
in specific test use setups these:
mockauthrepository .setup(m => m.registeruser(it.isany<usermodel>)) .returns(new list<usermodel> { new usermodel { // specific properties }, new usermodel { // specific properties }, new usermodel { // specific properties } }.asqueryable()); and make assertion selected users.
for example, can test register method prevent registering existing user placing in mockauthrepository same user in controller input , assert specific error code generated.
you can use mocks check if code called using verify method param times.once, times.never etc..
good luck!
Comments
Post a Comment