public void Create_引数の型にIRequestを実装したクローズドでAsServiceが付加されている場合はMediatorRequestが返される()
    {
        var requests = MediatorServiceDescription.Create(typeof(TestServiceRequest));

        requests.Should().HaveCount(1);
        var request = requests.First();

        request.Path.Should().Be("/path");
        request.ServiceType.Should().Be(typeof(TestServiceRequest));
    }
    public void Create_引数の型に複数のAsServiceが付加されている場合は複数のRequestが返される()
    {
        var requests = MediatorServiceDescription.Create(typeof(TestMultipleRouteRequest));

        requests.Should().HaveCount(2);
        var requestList = requests.OrderBy(r => r.Path).ToList();

        requestList[0].Path.Should().Be("/path1");
        requestList[0].ServiceType.Should().Be(typeof(TestMultipleRouteRequest));
        requestList[1].Path.Should().Be("/path2");
        requestList[1].ServiceType.Should().Be(typeof(TestMultipleRouteRequest));
    }
    public void Create_引数の型にAsServiceが付加されていない場合例外が発行される()
    {
        Action act = () => MediatorServiceDescription.Create(typeof(TestNotServicRequest));

        act.Should().Throw <ArgumentException>();
    }
    public void Create_引数の型がIRequestを継承していない場合例外が発行される()
    {
        Action act = () => MediatorServiceDescription.Create(typeof(TestPlainRequest));

        act.Should().Throw <ArgumentException>();
    }
    public void Create_引数の型が実装型じゃない場合例外が発行される()
    {
        Action act = () => MediatorServiceDescription.Create(typeof(TestAbstractRequest));

        act.Should().Throw <ArgumentException>();
    }
    public void Create_引数の型のGenericがオープンしてたら例外が発行される()
    {
        Action act = () => MediatorServiceDescription.Create(typeof(TestOpenGenericRequest <>));

        act.Should().Throw <ArgumentException>();
    }
    public void Create_引数がnullの場合は例外が発行される()
    {
        Action act = () => MediatorServiceDescription.Create(null);

        act.Should().Throw <ArgumentNullException>();
    }