or
[HttpGet] [Route("api/DealBuilder/GetSession")] public IHttpActionResult NewVersion(string sessionId) { try { if (!String.IsNullOrEmpty(sessionId)) { try { return Ok(dealbuilderRepository.GetTemplateAndXml(new Guid(sessionId))); } catch (Exception ex) { return InternalServerError(ex); } } else { return BadRequest("No Session ID was passed."); } } catch (Exception ex) { // TODO: logger.Error(ex.Message, ex); return InternalServerError(ex); } }
This is what i have so far for tests on my code above.
[TestMethod] public void NewVersion() { var repo = Mock.Create<IDealBuilderRepository>(); var controller = new DealBuilderController(repo); Mock.Arrange(() => repo.Equals(Arg.IsAny<String>())); var result = controller.NewVersion(Arg.IsAny<String>()); Mock.Assert(repo); } [TestMethod] public void GetNewVersionFail() { var repo = Mock.Create<IDealBuilderRepository>(); var controller = new DealBuilderController(repo); Mock.Arrange(() => repo.Equals(Arg.IsAny<Guid>())); // .Returns(null); var result = controller.NewVersion(new Guid().ToString()) as InternalServerErrorResult ; Mock.Assert(typeof(InternalServerErrorResult)); }[TestMethod]public async Task TestUploadEntity(){ IContainer container = (IContainer)TestContext.Properties["IContainer"]; BaseApiController apicontroller = container.Resolve<BaseApiController>(); Mock.NonPublic.Arrange(apicontroller, "setUtcOffset").IgnoreArguments().IgnoreInstance(); var config = new HttpConfiguration(); var route = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}"); var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "Mobile" } }); MultipartFormDataContent formDataContent = new MultipartFormDataContent(); formDataContent.Add(new StringContent(Guid.NewGuid().ToString()), name: "EntityID"); controller.Request = request; controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config; var result = await controller.addUpdateMessage();} [HttpPost] public async Task<string> addUpdateMessage() { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var provider = await Request.Content.ReadAsMultipartAsync<InMemoryMultipartFormDataStreamProvider>(new InMemoryMultipartFormDataStreamProvider()); setUtcOffset(); return "Success"; }01.using System.Collections.Generic;02. 03.namespace JustMock_AutoContainer04.{05. public interface IWorker06. {07. void DoSomething();08. }09. 10. public interface IService11. {12. string Moo { get; }13. 14. void DoLotsOfThings();15. }16. 17. public class Service : IService18. {19. private readonly IList<IWorker> workers;20. 21. public Service(IList<IWorker> workers, string moo)22. {23. this.workers = workers;24. this.Moo = moo;25. }26. 27. public string Moo { get; private set; }28. 29. public void DoLotsOfThings()30. {31. foreach (var worker in this.workers)32. {33. worker.DoSomething();34. }35. }36. }37.}01.using JustMock_AutoContainer;02.using Microsoft.VisualStudio.TestTools.UnitTesting;03.using System.Collections.Generic;04.using Telerik.JustMock;05.using Telerik.JustMock.AutoMock;06.using Telerik.JustMock.Helpers;07. 08.namespace JustMock_AutoContainer_Tests09.{10. [TestClass]11. public class ServiceTest12. {13. #region Fields14. private MockingContainer<Service> container;15. #endregion16. 17. #region Test Configuration18. [TestInitialize]19. public void CreateTargetContainer()20. {21. this.container = new MockingContainer<Service>();22. }23. #endregion24. 25. [TestMethod]26. public void DoLotsOfWork_TwoWorkers_AllWorkersCalled()27. {28. // Arrange29. var provider1 = StubWorker();30. var provider2 = StubWorker();31. var target = this.CreateTarget(provider1, provider2);32. 33. // Act34. target.DoLotsOfThings();35. 36. // Assert37. Assert.AreEqual("moo", target.Moo);38. provider1.Assert(p => p.DoSomething()); // Fails here :(39. provider2.Assert(p => p.DoSomething());40. }41. 42. #region Support Methods43. private static IWorker StubWorker()44. {45. var dataTraceProvider = Mock.Create<IWorker>();46. return dataTraceProvider;47. }48. 49. private IService CreateTarget(params IWorker[] providers)50. {51. this.container52. .Bind<IList<IWorker>>() 53. .ToConstant((IList<IWorker>)providers);54. 55. //TODO: fix line above; the list is not being picked up in the target.56. // JustMock seems keen on giving us a list with one and only one item in it, rather than57. // what we've registered above.58. this.container59. .Bind<string>()60. .ToConstant("moo");61. 62. return this.container.Instance;63. }64. 65. #endregion66. }67.}public interface IService2{ string MethodWithArgs(string one, string two);}[TestMethod]public void SubbingMethodwithArgs_DontCareAboutValues_StubbedMethodCalled(){ var service = StubMethodWithArgs("rv"); var actual = service.MethodWithArgs("a", "b"); Assert.AreEqual("rv", actual);}private static IService2 StubMethodWithArgs(string returnValue, string expectedOne = null, string expectedTwo = null){ var service = Mock.Create<IService2>(); service .Arrange(s => s.MethodWithArgs( null != expectedOne ? Arg.Is(expectedOne) : Arg.AnyString, // null coalesance (??) doesn't work either null != expectedTwo ? Arg.Is(expectedTwo) : Arg.AnyString)) .Returns(returnValue); return service;}01.public abstract class SimpleBaseClass02.{03. private readonly IService service;04. protected SimpleBaseClass(IService service)05. {06. this.service = service;07. }08. public void CallServiceMethod()09. {10. this.service.DoLotsOfThings();11. }12.}01.[TestMethod]02.public void AutoMock_AbstractClass_CallsMethod()03.{04. var container = new MockingContainer<SimpleBaseClass>();05. //container.Bind<SimpleBaseClass>().ToMock(); // Still fails :(06. container.Arrange<IService>(s => s.DoLotsOfThings()).MustBeCalled();07. 08. container.Instance.CallServiceMethod();09. 10. container.AssertAll();11.}12. 13.[TestMethod]14.public void CreateMock_AbstractClass_CallsMethod()15.{16. var service = Mock.Create<IService>();17. var target = Mock.Create<SimpleBaseClass>(Behavior.CallOriginal, service);18. 19. target.CallServiceMethod();20. 21. service.Assert(s => s.DoLotsOfThings());22.}// Arrange mock data.var service = new ScheduledTaskService();var start = new DateTime(2014, 08, 15);var due = start.Next(DayOfWeek.Thursday);var assignee = new SimpleEmployeeView {Id = 1, LastNameFirstName = "Test User", IsActive = true};var taskModel = new ScheduledTaskModel(){ DaysBeforeDue = 5, Start = start, End = due, Title = "Test Subject", Description = "Test Description", Id = 999};Mock.NonPublic.Arrange(service, "CreateTaskForAssignee", taskModel, assignee);var database = Mock.Create<Database>();Mock.Arrange(database, d => d.SaveChanges()).DoNothing();
// TODO test for changes in the result.