From 1a29d24fff6afd08520a384c18720835a915421c Mon Sep 17 00:00:00 2001
From: mfordjody <11638005@qq.com>
Date: Sun, 18 Jun 2023 13:39:30 +0800
Subject: [PATCH] Update local-mock.md (#2689)
---
.../service/local-mock.md | 20 ++++++++-----------
1 file changed, 8 insertions(+), 12 deletions(-)
diff --git a/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock.md b/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock.md
index b35c237c6e0c..08bffee5d1fd 100644
--- a/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock.md
+++ b/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock.md
@@ -16,7 +16,10 @@ weight: 10
## 特性说明
-在 Dubbo3 中有一种机制可以实现轻量级的服务降级,也就是本地伪装 [^1]。
+在 Dubbo3 中有一种机制可以实现轻量级的服务降级,也就是本地伪装。
+
+Mock 是 Stub 的一个子集,便于服务提供方在客户端执行容错逻辑,因经常需要在出现 RpcException (比如网络失败,超时等)时进行容错,而在出现业务异常(比如登录用户名密码错误)时不需要容错,
+如果用 Stub,可能就需要捕获并依赖 RpcException 类,而用 Mock 就可以不依赖 RpcException,因为它的约定就是只有出现 RpcException 时才执行。
## 使用场景
@@ -41,7 +44,7 @@ weight: 10
```
在工程中提供 Mock 实现 [^2]:
-
+在 interface 旁放一个 Mock 实现,它实现 BarService 接口,并有一个无参构造函数。同时,如果没有在配置文件中显式指定 Mock 类的时候,那么需要保证 Mock 类的全限定类名是 `原全限定类名+Mock` 的形式,例如 `com.foo.BarServiceMock`,否则将会 Mock 失败。
```java
package com.foo;
public class BarServiceMock implements BarService {
@@ -55,7 +58,7 @@ public class BarServiceMock implements BarService {
### 使用 return 关键字 Mock 返回值
使用 `return` 来返回一个字符串表示的对象,作为 Mock 的返回值。合法的字符串可以是:
-- *empty*:代表空,返回基本类型的默认值、集合类的空值、自定义实体类的空对象 [^3]
+- *empty*:代表空,返回基本类型的默认值、集合类的空值、自定义实体类的空对象,如果返回值是一个实体类,那么此时返回的将会是一个属性都为默认值的空对象而不是 `null`。
- *null*:返回 `null`
- *true*:返回 `true`
- *false*:返回 `false`
@@ -96,8 +99,9 @@ public class DemoService {
```
-当调用出错时,抛出指定的 Exception [^4]:
+当调用出错时,抛出指定的 Exception:
+自定义异常必须拥有一个入参为 `String` 的构造函数,该构造函数将用于接受异常信息。
```xml
@@ -156,11 +160,3 @@ Mock 可以在方法级别上指定,假定 `com.foo.BarService` 上有好几
```
-
-{{% alert title="注意事项" color="primary" %}}
-
-[^1]: Mock 是 Stub 的一个子集,便于服务提供方在客户端执行容错逻辑,因经常需要在出现 RpcException (比如网络失败,超时等)时进行容错,而在出现业务异常(比如登录用户名密码错误)时不需要容错,如果用 Stub,可能就需要捕获并依赖 RpcException 类,而用 Mock 就可以不依赖 RpcException,因为它的约定就是只有出现 RpcException 时才执行。
-[^2]: 在 interface 旁放一个 Mock 实现,它实现 BarService 接口,并有一个无参构造函数。同时,如果没有在配置文件中显式指定 Mock 类的时候,那么需要保证 Mock 类的全限定类名是 `原全限定类名+Mock` 的形式,例如 `com.foo.BarServiceMock`,否则将会 Mock 失败。
-[^3]: 如果返回值是一个实体类,那么此时返回的将会是一个属性都为默认值的空对象而不是 `null`。
-[^4]: 自定义异常必须拥有一个入参为 `String` 的构造函数,该构造函数将用于接受异常信息。
-{{% /alert %}}