FastMoq
Search Results for

    Show / Hide Table of Contents

    Class ScenarioBuilder<T>

    Provides a fluent arrange/act/assert pipeline for a tracked scenario target.

    Inheritance
    object
    ScenarioBuilder<T>
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: FastMoq
    Assembly: FastMoq.Core.dll
    Syntax
    public sealed class ScenarioBuilder<T> where T : class
    Type Parameters
    Name Description
    T
    Examples

    In MockerTestBase<TComponent>, prefer the parameterless overloads when Component is already available.

    This example uses the scenario pipeline together with provider-first verification.

    Scenario
        .When(() => Component.Submit(42))
        .Then(() => Component.Channel.Should().Be("priority"))
        .Verify<IOrderGateway>(x => x.Publish(42), TimesSpec.Once)
        .VerifyNoOtherCalls<IOrderGateway>()
        .Execute();

    Outside MockerTestBase<TComponent>, use the target-instance overloads.

    await mocker.Scenario(service)
        .When(component => component.RunAsync())
        .Verify<IBackgroundQueue>(x => x.Enqueue("job-42"), TimesSpec.Once)
        .ExecuteAsync();

    Properties

    Instance

    Gets the current scenario target instance.

    Declaration
    public T Instance { get; }
    Property Value
    Type Description
    T

    Methods

    Execute()

    Convenience execute for synchronous test bodies.

    Declaration
    public void Execute()

    ExecuteAsync()

    Executes the scenario (arrange -> act -> assert).

    Declaration
    public Task ExecuteAsync()
    Returns
    Type Description
    Task

    ExecuteThrowsAsync<TException>()

    Executes the scenario and returns the expected exception.

    Declaration
    public Task<TException> ExecuteThrowsAsync<TException>() where TException : Exception
    Returns
    Type Description
    Task<TException>
    Type Parameters
    Name Description
    TException
    Examples
    var exception = await mocker.Scenario(service)
        .When(component => component.RunAsync())
        .ExecuteThrowsAsync<InvalidOperationException>();

    ExecuteThrows<TException>()

    Executes the scenario and returns the expected exception.

    Declaration
    public TException ExecuteThrows<TException>() where TException : Exception
    Returns
    Type Description
    TException
    Type Parameters
    Name Description
    TException
    Examples

    Use this form when the exception object itself is the primary assertion target.

    var exception = Scenario
        .When(() => Component.SendRemindersAsync(now, CancellationToken.None))
        .ExecuteThrows<InvalidOperationException>();
    

    exception.Message.Should().Be("SMTP unavailable");

    Then(Action)

    Adds an assertion step.

    Declaration
    public ScenarioBuilder<T> Then(Action assertion)
    Parameters
    Type Name Description
    Action assertion
    Returns
    Type Description
    ScenarioBuilder<T>

    Then(Action<Mocker, T>)

    Adds an assertion step.

    Declaration
    public ScenarioBuilder<T> Then(Action<Mocker, T> assertion)
    Parameters
    Type Name Description
    Action<Mocker, T> assertion
    Returns
    Type Description
    ScenarioBuilder<T>

    Then(Action<T>)

    Adds a synchronous assertion step using only the component instance.

    Declaration
    public ScenarioBuilder<T> Then(Action<T> assertion)
    Parameters
    Type Name Description
    Action<T> assertion
    Returns
    Type Description
    ScenarioBuilder<T>

    Then(Func<Mocker, T, Task>)

    Adds an asynchronous assertion step.

    Declaration
    public ScenarioBuilder<T> Then(Func<Mocker, T, Task> assertion)
    Parameters
    Type Name Description
    Func<Mocker, T, Task> assertion
    Returns
    Type Description
    ScenarioBuilder<T>

    Then(Func<Task>)

    Adds an asynchronous assertion step.

    Declaration
    public ScenarioBuilder<T> Then(Func<Task> assertion)
    Parameters
    Type Name Description
    Func<Task> assertion
    Returns
    Type Description
    ScenarioBuilder<T>

    Then(Func<T, Task>)

    Adds an asynchronous assertion step using only the component instance.

    Declaration
    public ScenarioBuilder<T> Then(Func<T, Task> assertion)
    Parameters
    Type Name Description
    Func<T, Task> assertion
    Returns
    Type Description
    ScenarioBuilder<T>

    VerifyNoOtherCalls<TMock>()

    Queues a provider-first VerifyNoOtherCalls step to run during scenario execution.

    Declaration
    public ScenarioBuilder<T> VerifyNoOtherCalls<TMock>() where TMock : class
    Returns
    Type Description
    ScenarioBuilder<T>
    Type Parameters
    Name Description
    TMock

    Verify<TMock>(Expression<Action<TMock>>, TimesSpec?)

    Queues a provider-first verification step to run during scenario execution.

    Declaration
    public ScenarioBuilder<T> Verify<TMock>(Expression<Action<TMock>> expression, TimesSpec? times = null) where TMock : class
    Parameters
    Type Name Description
    Expression<Action<TMock>> expression
    TimesSpec? times
    Returns
    Type Description
    ScenarioBuilder<T>
    Type Parameters
    Name Description
    TMock

    When(Action)

    Adds a synchronous act step.

    Declaration
    public ScenarioBuilder<T> When(Action act)
    Parameters
    Type Name Description
    Action act
    Returns
    Type Description
    ScenarioBuilder<T>

    When(Action<Mocker, T>)

    Adds a synchronous act step.

    Declaration
    public ScenarioBuilder<T> When(Action<Mocker, T> act)
    Parameters
    Type Name Description
    Action<Mocker, T> act
    Returns
    Type Description
    ScenarioBuilder<T>

    When(Action<T>)

    Adds a synchronous act step using only the component instance.

    Declaration
    public ScenarioBuilder<T> When(Action<T> act)
    Parameters
    Type Name Description
    Action<T> act
    Returns
    Type Description
    ScenarioBuilder<T>

    When(Func<Mocker, T, Task>)

    Adds an asynchronous act step.

    Declaration
    public ScenarioBuilder<T> When(Func<Mocker, T, Task> act)
    Parameters
    Type Name Description
    Func<Mocker, T, Task> act
    Returns
    Type Description
    ScenarioBuilder<T>

    When(Func<Task>)

    Adds an asynchronous act step.

    Declaration
    public ScenarioBuilder<T> When(Func<Task> act)
    Parameters
    Type Name Description
    Func<Task> act
    Returns
    Type Description
    ScenarioBuilder<T>

    When(Func<T, Task>)

    Adds an asynchronous act step using only the component instance.

    Declaration
    public ScenarioBuilder<T> When(Func<T, Task> act)
    Parameters
    Type Name Description
    Func<T, Task> act
    Returns
    Type Description
    ScenarioBuilder<T>

    WhenThrows<TException>(Action)

    Adds a synchronous act step that is expected to throw the specified exception type.

    Declaration
    public ScenarioBuilder<T> WhenThrows<TException>(Action act) where TException : Exception
    Parameters
    Type Name Description
    Action act
    Returns
    Type Description
    ScenarioBuilder<T>
    Type Parameters
    Name Description
    TException
    Examples

    Use this when the act step is expected to fail but trailing assertions should still run.

    Scenario
        .WhenThrows<InvalidOperationException>(() => Component.SendRemindersAsync(now, CancellationToken.None))
        .Then(() => auditTrail.Count.Should().Be(1))
        .Execute();

    WhenThrows<TException>(Action<Mocker, T>)

    Adds a synchronous act step using the mocker and component instance that is expected to throw the specified exception type.

    Declaration
    public ScenarioBuilder<T> WhenThrows<TException>(Action<Mocker, T> act) where TException : Exception
    Parameters
    Type Name Description
    Action<Mocker, T> act
    Returns
    Type Description
    ScenarioBuilder<T>
    Type Parameters
    Name Description
    TException

    WhenThrows<TException>(Action<T>)

    Adds a synchronous act step using only the component instance that is expected to throw the specified exception type.

    Declaration
    public ScenarioBuilder<T> WhenThrows<TException>(Action<T> act) where TException : Exception
    Parameters
    Type Name Description
    Action<T> act
    Returns
    Type Description
    ScenarioBuilder<T>
    Type Parameters
    Name Description
    TException

    WhenThrows<TException>(Func<Mocker, T, Task>)

    Adds an asynchronous act step using the mocker and component instance that is expected to throw the specified exception type.

    Declaration
    public ScenarioBuilder<T> WhenThrows<TException>(Func<Mocker, T, Task> act) where TException : Exception
    Parameters
    Type Name Description
    Func<Mocker, T, Task> act
    Returns
    Type Description
    ScenarioBuilder<T>
    Type Parameters
    Name Description
    TException

    WhenThrows<TException>(Func<Task>)

    Adds an asynchronous act step that is expected to throw the specified exception type.

    Declaration
    public ScenarioBuilder<T> WhenThrows<TException>(Func<Task> act) where TException : Exception
    Parameters
    Type Name Description
    Func<Task> act
    Returns
    Type Description
    ScenarioBuilder<T>
    Type Parameters
    Name Description
    TException
    Examples
    await mocker.Scenario(service)
        .WhenThrows<InvalidOperationException>(component => component.RunAsync())
        .Then(component => component.Attempts.Should().Be(1))
        .ExecuteAsync();

    WhenThrows<TException>(Func<T, Task>)

    Adds an asynchronous act step using only the component instance that is expected to throw the specified exception type.

    Declaration
    public ScenarioBuilder<T> WhenThrows<TException>(Func<T, Task> act) where TException : Exception
    Parameters
    Type Name Description
    Func<T, Task> act
    Returns
    Type Description
    ScenarioBuilder<T>
    Type Parameters
    Name Description
    TException

    With(Action)

    Adds an arrangement action executed before any When/Act operations.

    Declaration
    public ScenarioBuilder<T> With(Action arrange)
    Parameters
    Type Name Description
    Action arrange
    Returns
    Type Description
    ScenarioBuilder<T>

    With(Action<Mocker, T>)

    Adds an arrangement action executed before any When/Act operations.

    Declaration
    public ScenarioBuilder<T> With(Action<Mocker, T> arrange)
    Parameters
    Type Name Description
    Action<Mocker, T> arrange
    Returns
    Type Description
    ScenarioBuilder<T>

    With(Action<T>)

    Adds an arrangement action using only the component instance.

    Declaration
    public ScenarioBuilder<T> With(Action<T> arrange)
    Parameters
    Type Name Description
    Action<T> arrange
    Returns
    Type Description
    ScenarioBuilder<T>

    With(Func<Mocker, T, Task>)

    Adds an asynchronous arrangement action executed before any When/Act operations.

    Declaration
    public ScenarioBuilder<T> With(Func<Mocker, T, Task> arrange)
    Parameters
    Type Name Description
    Func<Mocker, T, Task> arrange
    Returns
    Type Description
    ScenarioBuilder<T>

    With(Func<Task>)

    Adds an asynchronous arrangement action executed before any When/Act operations.

    Declaration
    public ScenarioBuilder<T> With(Func<Task> arrange)
    Parameters
    Type Name Description
    Func<Task> arrange
    Returns
    Type Description
    ScenarioBuilder<T>

    With(Func<T, Task>)

    Adds an asynchronous arrangement action using only the component instance.

    Declaration
    public ScenarioBuilder<T> With(Func<T, Task> arrange)
    Parameters
    Type Name Description
    Func<T, Task> arrange
    Returns
    Type Description
    ScenarioBuilder<T>

    With(T)

    Replaces the scenario target instance. This enables fluent patterns such as Scenario.With(Component).

    Declaration
    public ScenarioBuilder<T> With(T instance)
    Parameters
    Type Name Description
    T instance
    Returns
    Type Description
    ScenarioBuilder<T>

    Extension Methods

    ObjectExtensions.RaiseIfNull<T>(T?, string?, string?, int?, string?)
    TestClassExtensions.GetFieldValue<TObject>(TObject, string, TObject?)
    TestClassExtensions.GetField<TObject>(TObject, string)
    TestClassExtensions.GetMemberName<T, TValue>(T, Expression<Func<T, TValue>>)
    TestClassExtensions.GetMember<T, TValue>(T, Expression<Func<T, TValue>>)
    TestClassExtensions.GetMethodValue<TObject>(TObject, string, object?, params object[])
    TestClassExtensions.GetMethod<TObject>(TObject, string)
    TestClassExtensions.GetPropertyValue<TObject>(TObject, string, object?)
    TestClassExtensions.GetProperty<TObject>(TObject, string)
    TestClassExtensions.SetFieldValue<TObject>(TObject, string, object?)
    TestClassExtensions.SetPropertyValue<TObject>(TObject, string, object?)
    MockerHttpMoqExtensions.SetupHttpMessage(object, Func<HttpResponseMessage>, Expression?, Expression?)
    MockerHttpMoqExtensions.SetupMessageAsync<TMock, TReturn>(object, Expression<Func<TMock, Task<TReturn>>>, Func<TReturn>)
    MockerHttpMoqExtensions.SetupMessageProtectedAsync<TMock, TReturn>(object, string, Func<TReturn>, params object?[]?)
    MockerHttpMoqExtensions.SetupMessageProtected<TMock, TReturn>(object, string, Func<TReturn>, params object?[]?)
    MockerHttpMoqExtensions.SetupMessage<TMock, TReturn>(object, Expression<Func<TMock, TReturn>>, Func<TReturn>)
    TestClassExtensions.GetFieldInfo<TType>(object, string)
    TestClassExtensions.GetFieldValue<T>(object?, FieldInfo)
    TestClassExtensions.GetFieldValue<T, TType>(object, string)
    In this article
    Back to top
    Generated 2026-04-08 00:16 UTC