

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 測試和偵錯耐用函數
<a name="test-and-debug-durable-functions"></a>

在本機測試和偵錯耐用函數的運作方式與一般 Lambda 函數類似，並自動支援檢查點和重播。本指南涵蓋常見的測試案例和故障診斷技術。

## 本機測試工作流程
<a name="test-and-debug-durable-functions-workflow"></a>

在本機測試耐用函數時，工作流程與一般 Lambda 函數不同：

**耐用的函數測試工作流程**

1. 建置您的應用程式：

   ```
   $ sam build
   ```

1. 叫用您的耐久函數：

   ```
   $ sam local invoke MyDurableFunction --durable-execution-name test 
   ```

1. 如有需要，請檢查執行歷史記錄：

   ```
   $ sam local execution history execution-id
   ```

## 常見測試案例
<a name="test-and-debug-durable-functions-scenarios"></a>

### 測試檢查點行為
<a name="test-and-debug-durable-functions-scenarios-checkpoints"></a>

若要測試您的函數是否正確檢查點狀態：

```
# Example Python durable function
def handler(event, context):
    # This will create a checkpoint
    context.wait(10)  # Wait 10 seconds
    
    # Function resumes here after wait
    return {"message": "Function resumed after wait"}
```

當您在本機叫用此函數時，會自動處理等待期間。

### 測試回呼案例
<a name="test-and-debug-durable-functions-scenarios-callbacks"></a>

對於等待外部回呼的函數：

1. 啟動等待回呼的耐久函數

1. 在另一個終端機中，解析回呼：

   ```
   $ sam local callback succeed callback-id
   ```

1. 觀察函數繼續執行

## 疑難排解
<a name="test-and-debug-durable-functions-troubleshooting"></a>

### 耐用函數未正確執行
<a name="test-and-debug-durable-functions-troubleshooting-config"></a>

**問題：** 函數無法做為持久的函數。

**解決方案：**
+ 確認 `DurableConfig` 已在您的 SAM 範本中設定
+ 確保您的函數程式碼使用耐用的函數 SDK 方法 （例如 `context.wait()`)
+ 檢查您是否使用支援的執行期 (TypeScript、JavaScript、Python)

### 無法擷取執行歷史記錄
<a name="test-and-debug-durable-functions-troubleshooting-history"></a>

**問題：**`local execution history`命令不會傳回任何結果。

**解決方案：**
+ 驗證執行 ID 是否正確
+ 檢查是否已調用該函數至少一次

### 回呼命令無法運作
<a name="test-and-debug-durable-functions-troubleshooting-callbacks"></a>

**問題：**回呼命令無法解決待處理的操作。

**解決方案：**
+ 驗證回呼 ID 是否正確
+ 確保函數實際正在等待回呼
+ 確認您使用的是正確的回呼命令語法

## 偵錯秘訣
<a name="test-and-debug-durable-functions-debugging"></a>
+ **使用執行歷史記錄** - 檢閱執行歷史記錄，以了解您耐用函數的流程
+ **遞增測試** - 在新增複雜邏輯之前，從簡單的等待操作開始
+ **使用詳細記錄** - 啟用詳細記錄以追蹤執行流程

## 進一步了解
<a name="test-and-debug-durable-functions-learn"></a>

如需測試和偵錯的詳細資訊，請參閱：
+ [使用 進行測試的簡介 sam local invoke](using-sam-cli-local-invoke.md) - 本機調用文件
+ [sam local execution history](sam-cli-command-reference-sam-local-execution-history.md) - 執行歷史記錄