Browse Source

added ConventionalRegistrar_Tests

pull/81/head
Halil İbrahim Kalkan 10 years ago
parent
commit
c0b0c380bf
  1. 5
      src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionConventionalRegistrationExtensions.cs
  2. 3
      test/Volo.DependencyInjection.Tests/Microsoft/Extensions/DependencyInjection/AbpConventionalDependencyInjectionExtensions_Tests.cs
  3. 49
      test/Volo.DependencyInjection.Tests/Volo/DependencyInjection/ConventionalRegistrar_Test.cs

5
src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionConventionalRegistrationExtensions.cs

@ -3,11 +3,6 @@ using Volo.DependencyInjection;
namespace Microsoft.Extensions.DependencyInjection namespace Microsoft.Extensions.DependencyInjection
{ {
/* TODO: String IConventionalRegistrar objects in a static Dictionary
* may cause a performance problem if we create too many short lived IServiceCollection instances.
* Normally, an application will have a single IServiceCollection instance, but we should consider edge cases is there are.
*/
public static class ServiceCollectionConventionalRegistrationExtensions public static class ServiceCollectionConventionalRegistrationExtensions
{ {
public static IServiceCollection AddConventionalRegistrar(this IServiceCollection services, IConventionalRegistrar registrar) public static IServiceCollection AddConventionalRegistrar(this IServiceCollection services, IConventionalRegistrar registrar)

3
test/Volo.DependencyInjection.Tests/Microsoft/Extensions/DependencyInjection/AbpConventionalDependencyInjectionExtensions_Tests.cs

@ -5,9 +5,6 @@ using Xunit;
namespace Microsoft.Extensions.DependencyInjection namespace Microsoft.Extensions.DependencyInjection
{ {
//TODO: Add unit test for:
// - IConventionalRegistrar
public class AbpConventionalDependencyInjectionExtensions_Tests public class AbpConventionalDependencyInjectionExtensions_Tests
{ {
private readonly IServiceCollection _services; private readonly IServiceCollection _services;

49
test/Volo.DependencyInjection.Tests/Volo/DependencyInjection/ConventionalRegistrar_Test.cs

@ -0,0 +1,49 @@
using System;
using Microsoft.Extensions.DependencyInjection;
namespace Volo.DependencyInjection
{
public class ConventionalRegistrar_Tests
{
public void Should_Use_Custom_Conventions_If_Added()
{
//Arrange
var services = new ServiceCollection();
//Act
services.AddConventionalRegistrar(new MyCustomConventionalRegistrar());
services.AddTypes(typeof(MyCustomClass), typeof(MyClass), typeof(MyNonRegisteredClass));
//Assert
services.ShouldContainTransient(typeof(MyClass)); //Registered by default convention.
services.ShouldContainSingleton(typeof(MyCustomClass)); //Registered by custom convention.
services.ShouldNotContainService(typeof(MyNonRegisteredClass)); //Not registered by any convention.
}
public class MyCustomConventionalRegistrar : ConventionalRegistrarBase
{
public override void AddType(IServiceCollection services, Type type)
{
if (type == typeof(MyClass))
{
services.AddSingleton<MyCustomClass>();
}
}
}
public class MyCustomClass
{
}
public class MyNonRegisteredClass
{
}
public class MyClass : ITransientDependency
{
}
}
}
Loading…
Cancel
Save