STRUCT
WorkflowActionTester¶
public struct WorkflowActionTester<WorkflowType, Action> where Action: WorkflowAction, Action.WorkflowType == WorkflowType
Testing helper that chains action sending and state/output assertions to make tests easier to write.
MyWorkflow.Action
    .tester(withState: .firstState)
    .send(action: .exampleAction)
    .verifyOutput { output in
        XCTAssertEqual(.finished, output)
    }
    .verifyState { state in
        XCTAssertEqual(.differentState, state)
    }
Or to assert that an action produces no output:
MyWorkflow.Action
    .tester(withState: .firstState)
    .send(action: .actionProducingNoOutput)
    .assertNoOutput()
    .verifyState { state in
        XCTAssertEqual(.differentState, state)
    }
If your State or Output are Equatable, you can use the convenience assertion methods:
MyWorkflow.Action
    .tester(withState: .firstState)
    .send(action: .exampleAction)
    .assert(output: .finished)
    .assert(state: .differentState)
Methods¶
send(action:)¶
public func send(action: Action) -> WorkflowActionTester<WorkflowType, Action>
Sends an action to the reducer.
- 
parameter action: The action to send.
 - 
returns: A new state tester containing the state and output (if any) after the update.
 
Parameters¶
| Name | Description | 
|---|---|
| action | The action to send. | 
assertNoOutput(file:line:)¶
public func assertNoOutput(
    file: StaticString = #file,
    line: UInt = #line
) -> WorkflowActionTester<WorkflowType, Action>
Asserts that the action produced no output
- returns: A tester containing the current state and output.
 
verifyOutput(file:line:_:)¶
public func verifyOutput(
    file: StaticString = #file,
    line: UInt = #line,
    _ assertions: (WorkflowType.Output) throws -> Void
) rethrows -> WorkflowActionTester<WorkflowType, Action>
Invokes the given closure (which is intended to contain test assertions) with the produced output. If the previous action produced no output, the triggers a test failure and does not execute the closure.
- 
parameter assertions: A closure that accepts a single output value.
 - 
returns: A tester containing the current state and output.
 
Parameters¶
| Name | Description | 
|---|---|
| assertions | A closure that accepts a single output value. | 
verifyState(_:)¶
public func verifyState(_ assertions: (WorkflowType.State) throws -> Void) rethrows -> WorkflowActionTester<WorkflowType, Action>
Invokes the given closure (which is intended to contain test assertions) with the current state.
- 
parameter assertions: A closure that accepts a single state value.
 - 
returns: A tester containing the current state and output.
 
Parameters¶
| Name | Description | 
|---|---|
| assertions | A closure that accepts a single state value. |