/src/UnitTests/IOC/FluentPropertyInjectionTests.cs

http://github.com/philiplaureano/LinFu · C# · 51 lines · 39 code · 8 blank · 4 comment · 1 complexity · 79cb22db5a775073cfdc474102b30ebd MD5 · raw file

  1. using LinFu.IoC;
  2. using Moq;
  3. using Xunit;
  4. using SampleLibrary;
  5. namespace LinFu.UnitTests.IOC
  6. {
  7. public class FluentPropertyInjectionTests
  8. {
  9. private static void TestPropertyInjection(string serviceName)
  10. {
  11. var mockTarget = new Mock<IInjectionTarget>();
  12. mockTarget.Expect(t => t.SetValue(123));
  13. var target = mockTarget.Object;
  14. var container = new ServiceContainer();
  15. container.AddService(serviceName, target);
  16. // Use the named fluent interface for
  17. // named instances
  18. if (!string.IsNullOrEmpty(serviceName))
  19. container.Initialize<IInjectionTarget>(serviceName)
  20. .With(service => service.SetValue(123));
  21. else
  22. container.Initialize<IInjectionTarget>()
  23. .With(service => service.SetValue(123));
  24. var result = container.GetService<IInjectionTarget>(serviceName);
  25. Assert.NotNull(result);
  26. // The container should initialize the
  27. // service on every request
  28. mockTarget.VerifyAll();
  29. }
  30. [Fact]
  31. public void NamedPropertyMustBeInjectedIntoInjectionTarget()
  32. {
  33. var serviceName = "MyService";
  34. TestPropertyInjection(serviceName);
  35. }
  36. [Fact]
  37. public void UnnamedPropertyMustBeInjectedIntoInjectionTarget()
  38. {
  39. string serviceName = null;
  40. TestPropertyInjection(serviceName);
  41. }
  42. }
  43. }