Partilhar via


Classe ActionMock

Espaço de nomes: Microsoft.Azure.Workflows.UnitTesting.Definitions

Essa classe cria uma instância simulada para uma ação em um fluxo de trabalho de aplicativo lógico padrão. A *ActionMock classe fornece várias maneiras de criar ações fictícias para testar fluxos de trabalho padrão com saídas estáticas, condições de erro ou comportamento dinâmico com base no contexto de execução.

Utilização

// 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");

Construtores

Construtor com saídas estáticas

Cria uma ocorrência simulada para ActionMock com saídas estáticas.

public ActionMock(TestWorkflowStatus status, string name = null, MockOutput outputs = null)
Nome Descrição Tipo Obrigatório
Situação O status do resultado da ação simulada. TestWorkflowStatus Sim
nome O nome da ação simulada. corda Não
saídas As saídas estáticas simuladas. Saída Simulada Não
// 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);

Construtor com informações de erro

Cria uma instância simulada para ActionMock com informações de erro estático.

public ActionMock(TestWorkflowStatus status, string name = null, TestErrorInfo error = null)
Nome Descrição Tipo Obrigatório
Situação O status do resultado da ação simulada. TestWorkflowStatus Sim
nome O nome da ação simulada. corda Não
erro As informações de erro de ação simulada. TestErrorInfo Não
// 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);

Construtor com função de retorno de chamada

Cria uma instância simulada para ActionMock com uma função de retorno de chamada para saídas dinâmicas.

public ActionMock(Func<TestExecutionContext, ActionMock> onGetActionMock, string name = null)
Nome Descrição Tipo Obrigatório
onGetActionMock A função de retorno de chamada para obter a ação simulada Func<TestExecutionContext, ActionMock> Sim
nome O nome da ação simulada corda Não
// 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");

JSON construtor

Cria uma instância simulada para ActionMock a partir de JSON.

internal ActionMock(TestWorkflowStatus status, string name = null, JToken outputs = null, TestErrorInfo error = null)
Nome Descrição Tipo Obrigatório
Situação O status do resultado da ação simulada. TestWorkflowStatus Sim
nome O nome da ação simulada. corda Não
saídas As saídas simuladas. Saída Simulada Não
erro O erro simulado. TestErrorInfo Não
// Example: Create a mock action from JSON
var actionFromJson = JsonConvert.DeserializeObject<ActionMock>(File.ReadAllText(mockDataPath));

Propriedades

Esta classe herda as seguintes propriedades da OperationMock classe base.

Nome Descrição Tipo Obrigatório
Nome Obtém ou define o nome para a operação simulada. corda Não
Situação Obtém ou define o status da operação. TestWorkflowStatus Não
Saídas Obtém ou define um valor que representa a saída estática no formato JSON. JToken Não
Erro Obtém ou define o erro de operação. TestErrorInfo Não