次のクラスを持つ Web API プロジェクトがあります。このクラスは、基本的にすべてのApiController
インスタンスを登録して設定していDependencyResolver
ます。
public class DependencyResolverConfig
{
public static void Register(HttpConfiguration configuration, ContainerBuilder containerBuilder)
{
containerBuilder.RegisterApiControllers(Assembly.GetExecutingAssembly());
var container = containerBuilder.Build();
var resolver = new AutofacWebApiDependencyResolver(container);
configuration.DependencyResolver = resolver;
}
}
このクラスが実際にすべての API コントローラーを設定していることをテストするために、次のテストを行いました。
[Test]
public void RegistersApiControllers()
{
var config = new HttpConfiguration();
var containerBuilder = Substitute.For<ContainerBuilder>();
containerBuilder.RegisterApiControllers(Arg.Any<Assembly>());
DependencyResolverConfig.Register(config, containerBuilder);
containerBuilder.Received(2).RegisterApiControllers();
}
このテストを実行すると、次の例外が発生しますNSubstitute
NSubstitute.Exceptions.ReceivedCallsException : Expected to receive exactly 2 calls matching:
RegisterCallback(Action<IComponentRegistry>)
Actually received no matching calls.
Received 2 non-matching calls (non-matching arguments indicated with '*' characters):
RegisterCallback(*Action<IComponentRegistry>*)
RegisterCallback(*Action<IComponentRegistry>*)
これは紛らわしい出力です。実際の呼び出しと予想される呼び出しがまったく同じである場合、なぜNSubstitute
満足できないのか理解できません。手がかりはありますか?