# Probar un worker

> Ejecuta manualmente un worker desplegado con datos de prueba.

Fuente: https://developers.plazbot.com/cli/workers/test/

### Probar un worker

Ejecuta un worker ya desplegado enviándole datos de entrada, y muestra el resultado, la duración y el error si lo hubo. Úsalo después de [`plazbot workers deploy`](https://developers.plazbot.com/cli/workers/deploy) para validar el comportamiento sin esperar a un agente, un cron o un webhook real.

```bash
plazbot workers test <nombre> [options]
```

### Parámetros

| Parámetro | Flag | Requerido | Descripción |
|-----------|------|-----------|-------------|
| Nombre | `<nombre>` | Sí | Nombre del worker desplegado. |
| Datos | `-d, --data <json>` | No | Datos de entrada como objeto JSON. Acepta JSON en línea, `@archivo.json` para leerlo de un archivo o `@-` para leerlo de stdin. Debe ser un objeto (no un arreglo). Por defecto `{}`. |
| Tipo | `-t, --type <type>` | No | Tipo de ejecución: `tool`, `worker`, `sync`, `schedule`, `webhook`. Por defecto el del worker. |
| Contacto | `--contact <id>` | No | ID del contacto que se pasa como contexto (para tools). |
| Agente | `--agent <id>` | No | ID del agente que se pasa como contexto (para tools). |
| JSON | `--json` | No | Imprime el resultado crudo de la ejecución como JSON. |

### Ejemplos

```bash
# Ejecutar un worker sin datos
plazbot workers test get-stock

# Ejecutar con datos JSON en línea
plazbot workers test get-stock -d '{"product":"iPhone 15"}'

# Leer los datos de un archivo
plazbot workers test sync-orders -d @./payload.json

# Leer los datos de stdin y pasar contexto de contacto y agente
cat payload.json | plazbot workers test get-stock -d @- --contact ctc_AbcDef123 --agent age_AbcDef123 --json
```

### Resultado

Para un tool, el resultado se muestra desglosado en `result`, `data` y `actions`:

```text
Running worker "get-stock"
────────────────────────────────────────
Data: {"product":"iPhone 15"}

Completed in 245ms

Result: 
  result: Hay 12 unidades de iPhone 15
  actions: 
  - tag: consulto-stock
```

Para otros tipos se imprime el JSON devuelto. Si la ejecución falla:

```text
Running worker "get-stock"
────────────────────────────────────────

Error: Failed in 102ms

Error: INVENTORY_API_KEY is not configured
```

El comando termina con código 1 cuando la ejecución devuelve `success: false`.

### Salida JSON

Con `--json` se imprime tal cual la respuesta de la ejecución:

```json
{
"success": true,
"result": {
  "result": "Hay 12 unidades de iPhone 15",
  "actions": [{ "type": "tag", "value": "consulto-stock" }]
},
"duration": 245
}
```

En un fallo llegan `success: false` y `error` (o `message`/`errors`), y el código de salida es 1.

> **Nota:** Las ejecuciones de prueba quedan registradas con origen `cli-test`; las verás en la columna Source de [`plazbot workers logs`](https://developers.plazbot.com/cli/workers/logs).

### Errores comunes

| Mensaje | Causa | Solución |
|---------|-------|----------|
| `Worker "<nombre>" not found or inactive.` | El worker no existe o está inactivo. | Revisa el nombre con [`plazbot workers list`](https://developers.plazbot.com/cli/workers/list). |
| `Invalid JSON in --data (...).` | El valor de `-d` no es JSON válido. | Usa comillas simples alrededor del JSON: `-d '{"product":"iPhone 15"}'`. |
| `The data in --data must be a JSON object.` | Pasaste un arreglo, string o número. | Envuelve los datos en un objeto. |
| `Could not read data file: <archivo>.` | El archivo después de `@` no existe. | Revisa la ruta. |
| `Missing file name after "@".` | Usaste `-d @` sin archivo. | Usa `-d @./payload.json` o `-d @-`. |
| `You are not signed in.` | No hay sesión. | Ejecuta [`plazbot login`](https://developers.plazbot.com/cli/login). |
