Compartilhar via


Classe ActionMock

Namespace: 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 Standard. A *ActionMock classe fornece várias maneiras de criar ações simuladas para testar fluxos de trabalho Standard com saídas estáticas, condições de erro ou comportamento dinâmico com base no contexto de execução.

Uso

// 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 instância simulada para ActionMock saídas estáticas.

public ActionMock(TestWorkflowStatus status, string name = null, MockOutput outputs = null)
Nome Descrição Tipo Obrigatório
estado 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. MockOutput 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áticas.

public ActionMock(TestWorkflowStatus status, string name = null, TestErrorInfo error = null)
Nome Descrição Tipo Obrigatório
estado 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 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");

Construtor JSON

Cria uma instância simulada para ActionMock o JSON.

internal ActionMock(TestWorkflowStatus status, string name = null, JToken outputs = null, TestErrorInfo error = null)
Nome Descrição Tipo Obrigatório
estado 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. MockOutput Não
erro O erro fictício. TestErrorInfo Não
// Example: Create a mock action from JSON
var actionFromJson = JsonConvert.DeserializeObject<ActionMock>(File.ReadAllText(mockDataPath));

Propriedades

Essa classe herda as seguintes propriedades da OperationMock classe base.

Nome Descrição Tipo Obrigatório
Nome Obtém ou define o nome da 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 da operação. TestErrorInfo Não