Udostępnij za pośrednictwem


Klasa "ActionMock"

Przestrzeń nazw: Microsoft.Azure.Workflows.UnitTesting.Definitions

Ta klasa tworzy pozorne wystąpienie akcji w przepływie pracy standardowej aplikacji logiki. Klasa *ActionMock udostępnia wiele sposobów tworzenia pozornych akcji na potrzeby testowania standardowych przepływów pracy przy użyciu statycznych danych wyjściowych, warunków błędów lub dynamicznego zachowania na podstawie kontekstu wykonywania.

Zastosowanie

// Simple mock action with success status
var successAction = new ActionMock(TestWorkflowStatus.Succeeded, "SendEmail");

// A mock action with specific outputs
var outputAction = new ActionMock(
    TestWorkflowStatus.Succeeded, 
    "HttpRequest",
    new MockOutput { 
        StatusCode = 200,
        Headers = JToken.Parse(@"{""Content-Type"": ""application/json""}"),
        Body = JToken.Parse(@"{""result"": ""success"", ""id"": 12345}")
    });

// Failed action with error information
var failedAction = new ActionMock(
    TestWorkflowStatus.Failed,
    "DatabaseWrite",
    new TestErrorInfo(
        ErrorResponseCode.BadRequest,
        "Database connection failed"
    ));

// Dynamic action that changes behavior based on execution context
var dynamicAction = new ActionMock(
    (context) => {
        var inputs = context.ActionContext.ActionInputs;
        var amount = (int)inputs["amount"];
        
        if (amount > 1000) {
            return new ActionMock(TestWorkflowStatus.Failed, "PaymentProcessing", 
                new TestErrorInfo(ErrorResponseCode.BadRequest, "Amount exceeds limit"));
        }
        
        return new ActionMock(TestWorkflowStatus.Succeeded, "PaymentProcessing",
            new MockOutput { Body = JToken.Parse(@"{""transactionId"": ""ABC123""}") });
    },
    "DynamicPaymentAction");

Konstruktory

Konstruktor ze statycznymi danymi wyjściowymi

Tworzy pozorne wystąpienie dla elementu ActionMock z danymi wyjściowymi statycznymi.

public ActionMock(TestWorkflowStatus status, string name = null, MockOutput outputs = null)
Nazwa Opis Typ Wymagane
stan Stan wyniku makiety akcji. TestWorkflowStatus Tak
nazwa Nazwa akcji pozoru. sznurek Nie.
Wyniki Pozorne dane wyjściowe statyczne. MockOutput Nie.
// Example: Create a mock action with successful status and static outputs
var outputs = new MockOutput { 
    Body = JToken.Parse(@"{""result"": ""Operation completed""}"),
    StatusCode = 200
};
var actionMock = new ActionMock(TestWorkflowStatus.Succeeded, "ProcessData", outputs);

Konstruktor z informacjami o błędzie

Tworzy pozorne wystąpienie programu z ActionMock informacjami o błędzie statycznym.

public ActionMock(TestWorkflowStatus status, string name = null, TestErrorInfo error = null)
Nazwa Opis Typ Wymagane
stan Stan wyniku makiety akcji. TestWorkflowStatus Tak
nazwa Nazwa akcji pozoru. sznurek Nie.
błąd Informacje o błędzie akcji pozoru. TestErrorInfo Nie.
// Example: Create an action mock with failed status and error information
var errorInfo = new TestErrorInfo(
    ErrorResponseCode.InternalServerError,
    "Service temporarily unavailable"
);
var actionMock = new ActionMock(TestWorkflowStatus.Failed, "ExternalAPICall", errorInfo);

Konstruktor z funkcją wywołania zwrotnego

Tworzy pozorne wystąpienie funkcji ActionMock wywołania zwrotnego dla dynamicznych danych wyjściowych.

public ActionMock(Func<TestExecutionContext, ActionMock> onGetActionMock, string name = null)
Nazwa Opis Typ Wymagane
onGetActionMock Funkcja wywołania zwrotnego, aby uzyskać pozorną akcję Func<TestExecutionContext, ActionMock> Tak
nazwa Nazwa makiety akcji sznurek Nie.
// Example: Create a mock action with dynamic outputs based on execution context
var actionMock = new ActionMock(
    (context) => {
        var actionName = context.ActionContext.ActionName;
        var inputs = context.ActionContext.ActionInputs;
          // Determine outputs dynamically based on context
        if (actionName == "ValidateUser" && inputs["userId"]?.Value<int>() > 0) {
            return new ActionMock(
                TestWorkflowStatus.Succeeded,
                "ValidateUser", 
                new MockOutput { Body = JToken.Parse(@"{""isValid"": true}") }
            );
        }
        
        return new ActionMock(TestWorkflowStatus.Failed, "ValidateUser");
    }, 
    "ConditionalValidation");

Konstruktor JSON

Tworzy pozorne wystąpienie dla z ActionMock formatu JSON.

internal ActionMock(TestWorkflowStatus status, string name = null, JToken outputs = null, TestErrorInfo error = null)
Nazwa Opis Typ Wymagane
stan Stan wyniku makiety akcji. TestWorkflowStatus Tak
nazwa Nazwa akcji pozoru. sznurek Nie.
Wyniki Pozorne wyjście. MockOutput Nie.
błąd Pozorny błąd. TestErrorInfo Nie.
// Example: Create a mock action from JSON
var actionFromJson = JsonConvert.DeserializeObject<ActionMock>(File.ReadAllText(mockDataPath));

Właściwości

Ta klasa dziedziczy następujące właściwości z klasy bazowej OperationMock .

Nazwa Opis Typ Wymagane
Nazwa Pobiera lub ustawia nazwę makiety operacji. sznurek Nie.
Stan Pobiera lub ustawia stan operacji. TestWorkflowStatus Nie.
Wyniki Pobiera lub ustawia wartość reprezentującą statyczne dane wyjściowe w formacie JSON. JToken Nie.
Błąd Pobiera lub ustawia błąd operacji. TestErrorInfo Nie.