Files
waf-platform/HttpDNSSDK/sdk/ios/NewHttpDNSTests/Network
..

HttpdnsNWHTTPClient 瘚贝<E7989A>憟𦯀辣

<EFBFBD>祉𤌍敶訫<EFBFBD><EFBFBD>?HttpdnsNWHTTPClient <20>?HttpdnsNWReusableConnection <20><><EFBFBD><EFBFBD><EFBFBD>霂訫<E99C82>隞嗚<E99A9E>?

瘚贝<EFBFBD><EFBFBD><EFBFBD>辣蝏𤘪<EFBFBD>

TrustHttpDNSTests/Network/
<0A><EFBFBD><E98EBF><EFBFBD> HttpdnsNWHTTPClientTests.m              # 銝餃<E98A9D><E9A483><EFBFBD><EFBFBD>霂𤏪<E99C82>44銝迎<E98A9D>
<0A><EFBFBD><E98EBF><EFBFBD> HttpdnsNWHTTPClientIntegrationTests.m   # <20><><EFBFBD>瘚贝<E7989A>嚗?銝迎<E98A9D>
<0A><EFBFBD><E98EBF><EFBFBD> HttpdnsNWHTTPClientTestHelper.h/m       # 瘚贝<E7989A><EFBFBD>𨭌撌亙<E6928C>蝐?
<0A><EFBFBD><E5A999><EFBFBD> README.md                               # <20><EFBFBD>隞?

瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

<EFBFBD><EFBFBD>瘚贝<EFBFBD> (HttpdnsNWHTTPClientTests.m)

A. HTTP 閫<><E996AB><EFBFBD><EFBFBD>瘚贝<E7989A> (25銝?

  • A1. Header 閫<><E996AB> (9銝?

    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
    • 憭帋葵憭湧<EFBFBD>摮埈挾
    • 銝滚<EFBFBD><EFBFBD>湔㺭<EFBFBD><EFBFBD><EFBFBD>?
    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
    • 蝛箸聢憭<EFBFBD><EFBFBD>銝?trim
    • 蝛箏<EFBFBD>澆仍<EFBFBD>?
    • <EFBFBD>墧㺭摮㛖𠶖<EFBFBD><EFBFBD><EFBFBD>
    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝粹妟
    • <EFBFBD><EFBFBD>憭湧<EFBFBD>銵?
  • A2. Chunked 蝻𣇉<E89DBB><EFBFBD><E79289>?(8銝?

    • <EFBFBD>蓥葵 chunk
    • 憭帋葵 chunks
    • 銝滚<EFBFBD><EFBFBD>?chunk
    • Chunk extension <20><EFBFBD>
    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>餈𥕦<EFBFBD> size
    • Chunk size 皞W枂
    • 蝻箏<EFBFBD> CRLF 蝏<>迫蝚?
    • 撣?trailers <20>?chunked
  • A3. Chunked 閫<><E996AB> (2銝?

    • 憭帋葵 chunks 甇<><EFBC86><E996AB>
    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>餈𥪜<EFBFBD> nil
  • A4. 摰峕㟲<E5B395><EFBFBD><EFBFBD><E996AB> (6銝?

    • Content-Length <20><EFBFBD>
    • Chunked 蝻𣇉<E89DBB><F0A38789><EFBFBD>
    • 蝛?body
    • Content-Length 銝滚龪<E6BB9A>?
    • 蝛箸㺭<EFBFBD><EFBFBD>霂?
    • <EFBFBD><EFBFBD> headers <20>?body

C. 霂瑟<E99C82><E7919F><EFBFBD>遣瘚贝<E7989A> (7銝?

  • <EFBFBD>箸𧋦 GET 霂瑟<E99C82><E7919F><EFBFBD>
  • <EFBFBD>亥砭<EFBFBD><EFBFBD>㺭憭<EFBFBD><EFBFBD>
  • User-Agent 憭湧<E686AD>
  • HTTP 暺䁅恕蝡臬藁憭<E89781><E686AD>
  • HTTPS 暺䁅恕蝡臬藁憭<E89781><E686AD>
  • <EFBFBD><EFBFBD>霈斤垢<EFBFBD><EFBFBD>遬蝷?
  • <EFBFBD><EFBFBD>憭湧<EFBFBD>撉諹<EFBFBD>

E. TLS 撉諹<E69289>瘚贝<E7989A> (4銝芸<E98A9D>雿滨泵)

  • <EFBFBD><EFBFBD><EFBFBD>髡餈𥪜<EFBFBD> YES
  • Proceed 蝏𤘪<E89D8F>餈𥪜<E9A488> YES
  • <EFBFBD><EFBFBD><EFBFBD>髡餈𥪜<EFBFBD> NO
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿輻鍂 SSL Policy

*瘜剁<E7989C>TLS 瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD><E996AC>摰䂿<E691B0> SecTrustRef <20><EFBFBD><E7A18B>?mock嚗<6B><E59A97><EFBFBD>滢蛹<E6BBA2><EFBFBD>蝚?

F. 颲寧<E9A2B2><E5AFA7><EFBFBD><EFBFBD>瘚贝<E7989A> (8銝?

  • <EFBFBD>鵭 URL 憭<><E686AD>
  • 蝛?User-Agent
  • <EFBFBD><EFBFBD><EFBFBD>雿橒<EFBFBD>5MB嚗?
  • Chunked 閫<><E996AB>憭梯揖<E6A2AF><EFBFBD><E9AE8B>
  • 餈墧𦻖瘙?key - 銝滚<E98A9D> hosts
  • 餈墧𦻖瘙?key - 銝滚<E98A9D> ports
  • 餈墧𦻖瘙?key - HTTP vs HTTPS

<EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD> (HttpdnsNWHTTPClientIntegrationTests.m)

雿輻鍂 httpbin.org 餈𥡝<E9A488><F0A5A19D><EFBFBD>蝵𤑳<E89DB5>瘚贝<E7989A> (22銝?嚗?

G. <20><EFBFBD><E7AE87><EFBFBD><EFBFBD>瘚贝<E7989A> (7銝?

  • HTTP GET 霂瑟<E99C82>
  • HTTPS GET 霂瑟<E99C82>
  • HTTP 404 <20><EFBFBD>
  • 餈墧𦻖憭滨鍂嚗<EFBFBD>舅甈∟窈瘙<EFBFBD><EFBFBD>
  • Chunked <20><EFBFBD><EFBFBD><E686AD>
  • 霂瑟<EFBFBD><EFBFBD>𧒄瘚贝<EFBFBD>
  • <EFBFBD><EFBFBD>銋匧仍<EFBFBD><EFBFBD>霂?

H. 撟嗅<E6929F>瘚贝<E7989A> (5銝?

  • 撟嗅<EFBFBD>霂瑟<EFBFBD><EFBFBD><EFBFBD>銝餅㦤嚗?0銝芰瑪蝔页<E89D94>
  • 撟嗅<EFBFBD>霂瑟<EFBFBD>銝滚<EFBFBD>頝臬<EFBFBD>嚗?銝芯<E98A9D><E88AAF>𨫪ndpoint嚗?
  • 瘛瑕<EFBFBD> HTTP + HTTPS 撟嗅<E6929F><EFBFBD><E59A97>5銝芰瑪蝔页<E89D94>
  • 擃䁅<EFBFBD>頧賢<EFBFBD><EFBFBD>𥟇<EFBFBD>霂𤏪<EFBFBD>50銝芸僎<EFBFBD>𤏸窈瘙<EFBFBD><EFBFBD>
  • 瘛瑕<EFBFBD>銝脰<EFBFBD>+撟嗅<E6929F><E79285>

I. 蝡墧<E89DA1><E5A2A7>辺隞嗆<E99A9E>霂?(5銝?

  • 餈墧𦻖瘙惩捆<EFBFBD>𤩺<EFBFBD>霂𤏪<EFBFBD><EFBFBD><EFBFBD>4銝芾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
  • <EFBFBD>峕𧒄敶坿<EFBFBD>餈墧𦻖嚗?銝芸僎<E88AB8>𡢅<EFBFBD>
  • <EFBFBD><EFBFBD>-敶坿<E695B6>-<2D>滩繮<E6BBA9>𣇉<EFBFBD><F0A38789>?
  • <EFBFBD>𧒄銝擧暑頝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>31蝘𡜐<EFBFBD><EFBFBD>航歲餈<EFBFBD><EFBFBD>
  • <EFBFBD>躰秤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>亙熒<EFBFBD><EFBFBD>?

J. 擃条漣餈墧𦻖憭滨鍂瘚贝<E7989A> (5銝?

  • 餈墧𦻖餈<EFBFBD><EFBFBD>銝擧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>31蝘𡜐<EFBFBD><EFBFBD>航歲餈<EFBFBD><EFBFBD>
  • 餈墧𦻖瘙惩捆<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10銝芾<EFBFBD>蝏剛窈瘙<EFBFBD><EFBFBD>
  • 銝滚<EFBFBD>頝臬<EFBFBD>憭滨鍂餈墧𦻖嚗?銝芯<E98A9D><E88AAF>諹楝敺<E6A59D><E695BA>
  • HTTP vs HTTPS 雿輻鍂銝滚<E98A9D>餈墧𦻖瘙籑ey
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂𤏪<EFBFBD>20銝芾窈瘙<EFBFBD>𡢿<EFBFBD>?蝘𡜐<E89D98><F0A19C90>航歲餈<E6ADB2><E9A488>

餈鞱<EFBFBD>瘚贝<EFBFBD>

餈鞱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂?

xcodebuild test \
  -workspace TrustHttpDNS.xcworkspace \
  -scheme TrustHttpDNSTests \
  -destination 'platform=iOS Simulator,name=iPhone 15' \
  -only-testing:TrustHttpDNSTests/HttpdnsNWHTTPClientTests

餈鞱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝏頣<EFBFBD>

xcodebuild test \
  -workspace TrustHttpDNS.xcworkspace \
  -scheme TrustHttpDNSTests \
  -destination 'platform=iOS Simulator,name=iPhone 15' \
  -only-testing:TrustHttpDNSTests/HttpdnsNWHTTPClientIntegrationTests

餈鞱<EFBFBD><EFBFBD>蓥葵瘚贝<EFBFBD>

xcodebuild test \
  -workspace TrustHttpDNS.xcworkspace \
  -scheme TrustHttpDNSTests \
  -destination 'platform=iOS Simulator,name=iPhone 15' \
  -only-testing:TrustHttpDNSTests/HttpdnsNWHTTPClientTests/testParseHTTPHeaders_ValidResponse_Success

瘚贝<EFBFBD><EFBFBD>𨭌撌亙<EFBFBD>

HttpdnsNWHTTPClientTestHelper

<EFBFBD>𣂷<EFBFBD>隞乩<EFBFBD>撌亙<EFBFBD><EFBFBD><EFBFBD>嚗?

HTTP <20><EFBFBD><E6BB9A><EFBFBD><EFBFBD>?

// <20><><EFBFBD><EFBFBD><E4ADBE>?HTTP <20><EFBFBD>
+ (NSData *)createHTTPResponseWithStatus:(NSInteger)statusCode
                              statusText:(NSString *)statusText
                                 headers:(NSDictionary *)headers
                                    body:(NSData *)body;

// <20><><EFBFBD>?chunked <20><EFBFBD>
+ (NSData *)createChunkedHTTPResponseWithStatus:(NSInteger)statusCode
                                        headers:(NSDictionary *)headers
                                         chunks:(NSArray<NSData *> *)chunks;

Chunked 蝻𣇉<E89DBB>撌亙<E6928C>

+ (NSData *)encodeChunk:(NSData *)data;
+ (NSData *)encodeLastChunk;

<EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD>

+ (NSData *)randomDataWithSize:(NSUInteger)size;
+ (NSData *)jsonBodyWithDictionary:(NSDictionary *)dictionary;

瘚贝<EFBFBD>蝏蠘恣

瘚贝<EFBFBD>蝐餃<EFBFBD> 瘚贝<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HTTP 閫<><E996AB> 25 HTTP 憭湧<E686AD><E6B9A7><EFBFBD>hunked 蝻𣇉<E89DBB><F0A38789><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摨?
霂瑟<EFBFBD><EFBFBD><EFBFBD> 7 URL 憭<><E686AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E587BD>?
TLS 撉諹<E69289> 4 (<28><EFBFBD>蝚? <EFBFBD>髡撉諹<EFBFBD>
颲寧<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 8 <EFBFBD>虜颲枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
<EFBFBD><EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD> 43 -
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD> (G) 7 <EFBFBD><EFBFBD>蝵𤑳<EFBFBD>霂瑟<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砍㦤<EFBFBD>?
撟嗅<EFBFBD>瘚贝<EFBFBD> (H) 5 憭𡁶瑪蝔见僎<EFBFBD><EFBFBD><EFBFBD><EFBFBD>韐蠘蝸
蝡墧<EFBFBD><EFBFBD>辺隞嗆<EFBFBD>霂?(I) 5 餈墧𦻖瘙删<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂舀<EFBFBD>憭?
餈墧𦻖憭滨鍂瘚贝<EFBFBD> (J) 5 餈墧𦻖餈<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鵭餈墧𦻖<EFBFBD><EFBFBD><EFBFBD>霈桅<EFBFBD>蝳?
憭𡁶垢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>仿<EFBFBD>蝳?(K) 5 銝滚<EFBFBD>蝡臬藁<EFBFBD><EFBFBD>餈墧𦻖瘙?
蝡臬藁瘙㰘<EFBFBD>堒偷瘚贝<EFBFBD> (L) 3 憭𡁶垢<EFBFBD><EFBFBD><EFBFBD>韐蠘蝸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠉛氖
颲寧<EFBFBD><EFBFBD>∩辣撉諹<EFBFBD> (M) 4 蝡臬藁餈<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡臬藁<EFBFBD><EFBFBD>
撟嗅<EFBFBD>憭𡁶垢<EFBFBD><EFBFBD><EFBFBD>?(N) 3 撟嗉<EFBFBD> keep-alive<76><65>蔭霂<E99C82><EFBCB7>?
<EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD> 37 -
<EFBFBD>餉恣 80 -

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂𤏪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

隞乩<EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠰴<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Mock <20>箸艶嚗<E889B6><EFBFBD>寞旿<E5AF9E><E697BF><EFBFBD><EFBFBD>𩤃<EFBFBD>

B. 餈墧𦻖瘙删恣<E588A0><E681A3><EFBFBD>霂?(18銝?

<EFBFBD><EFBFBD>閬?Mock HttpdnsNWReusableConnection <20><><EFBFBD><EFBFBD><EFBFBD><E6B8A1>賢𪂹<E8B3A2>?

D. 摰峕㟲瘚<E39FB2><E7989A>瘚贝<E7989A> (13銝?

<EFBFBD><EFBFBD>閬?Mock 餈墧𦻖瘙惩<E79899>蝵𤑳<E89DB5><EFBFBD><E69285><EFBFBD><EFBFBD><EFBFBD><EFBFBD>箸艶

Mock Server 雿輻鍂

<EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>雿輻鍂<EFBFBD>砍𧑐 mock server (127.0.0.1) <20>蹂誨 httpbin.org嚗峕<E59A97>靘𤤿迅摰𡁜虾<F0A1819C><EFBFBD>瘚贝<E7989A><E8B49D><EFBFBD><E887AC>?

<EFBFBD>臬𢆡 Mock Server

cd TrustHttpDNSTests/Network
python3 mock_server.py

**瘜冽<E7989C>**嚗帋蝙<E5B88B><EFBFBD><E588B8><EFBFBD>蝡臬藁嚗?1080/11443-11446嚗㚁<E59A97><E39A81>𣳇<EFBFBD> sudo <20><><EFBFBD><EFBFBD>?

餈鞱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>

<EFBFBD>典𡖂銝<EFBFBD>銝芰<EFBFBD>蝡舐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

xcodebuild test \
  -workspace TrustHttpDNS.xcworkspace \
  -scheme TrustHttpDNSTests \
  -destination 'platform=iOS Simulator,name=iPhone 15' \
  -only-testing:TrustHttpDNSTests/HttpdnsNWHTTPClientIntegrationTests

Mock Server <20><EFBFBD>?

  • HTTP: <20>穃𨯬 127.0.0.1:11080
  • HTTPS: <20>穃𨯬 127.0.0.1:11443, 11444, 11445, 11446 (<28>芰倌<E88AB0><EFBFBD>銋?
  • **憭𡁶垢<F0A181B6><E59EA2>𤌍<EFBFBD>?*: 瘚贝<E7989A>餈墧𦻖瘙删<E79899>蝡臬藁<E887AC>𠉛氖<F0A0899B><EFBFBD>
  • 撟嗅<EFBFBD><EFBFBD><EFBFBD>: 憭𡁶瑪蝔见<E89D94><E8A781><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟嗅<E6929F>瘚贝<E7989A>
  • **<2A>嗅辣餈?*: <20>砍𧑐<E7A08D><EFBFBD>嚗峕<E59A97>霂閖<E99C82>笔漲敹?

霂西<EFBFBD> MOCK_SERVER.md

瘜冽<EFBFBD>鈭钅★

  1. <EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>靘肽<EFBFBD> Mock Server嚗䫤HttpdnsNWHTTPClientIntegrationTests 雿輻鍂<E8BCBB>砍𧑐 mock server (127.0.0.1)<29><><EFBFBD>霂訫<E99C82><E8A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?mock_server.py`<60>?

  2. **<2A><EFBFBD>霂閗歲餈?*嚗𡁻<E59A97><F0A181BB><EFBFBD><EFBFBD>霂閖<E99C82><EFBFBD><E996AC>敺?1蝘𡜐<E89D98>瘚贝<E7989A>餈墧𦻖餈<F0A6BB96><E9A488>嚗㚁<E59A97><E39A81>航挽蝵桃㴓憓<E3B493><E68693><EFBFBD>?SKIP_SLOW_TESTS=1 頝唾<E9A09D>餈嗘<E9A488>瘚贝<E7989A>嚗?

    • testRaceCondition_ExpiredConnectionPruning_CreatesNewConnection
    • testConnectionReuse_Expiry31Seconds_NewConnectionCreated
    • testConnectionReuse_TwentyRequestsOneSecondApart_ConnectionKeptAlive
  3. **撟嗅<E6929F>瘚贝<E7989A>摰寥<E691B0>**嚗𡁜僎<F0A1819C><EFBFBD><E7A983><EFBFBD>瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD><EFBFBD>憭梯揖嚗<E68F96><E59A97>憒?H.4 閬<><E996AC>80%<25>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD><EFBFBD><E59A97>銝粹<E98A9D>韐蠘蝸銝衤<E98A9D><E8A1A4><EFBFBD><E888AA>箇緵蝵𤑳<E89DB5>𢆡<EFBCB7>?

  4. **TLS 瘚贝<E7989A><E8B49D><EFBFBD>蝚?*嚗鍃 蝏?TLS 瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD><E996AC>摰䂿<E691B0> SecTrustRef <20><EFBFBD>蝥?mock 獢<>沲嚗<E6B2B2><E59A97><EFBFBD><EFBFBD>銝箏<E98A9D>雿滨泵<E6BBA8>?

  5. <EFBFBD><EFBFBD>隞嗆溶<EFBFBD><EFBFBD> Xcode嚗𡁜<EFBFBD>撱箇<EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>冽溶<EFBFBD><EFBFBD> TrustHttpDNSTests target<65>?

  6. 瘚贝<EFBFBD><EFBFBD>唳旿嚗帋蝙<EFBFBD>?HttpdnsNWHTTPClientTestHelper <20><><EFBFBD>瘚贝<E7989A><E8B49D>唳旿嚗𣬚靽脲<E99DBD>霂閧<E99C82><E996A7><EFBFBD>憭齿<E686AD><EFBFBD>?

<EFBFBD><EFBFBD>辣靘肽<EFBFBD>

瘚贝<EFBFBD><EFBFBD><EFBFBD>辣靘肽<EFBFBD>隞乩<EFBFBD>皞鞉<EFBFBD>隞塚<EFBFBD>

  • HttpdnsNWHTTPClient.h/m - 銝餉<E98A9D>鋡急<E98BA1>霂閧掩
  • HttpdnsNWHTTPClient_Internal.h - <20><><EFBFBD><EFBFBD><EFBFBD><E5AF9E>湧蠧嚗<E8A0A7><E59A97>霂蓥<E99C82><E893A5><EFBFBD>
  • HttpdnsNWReusableConnection.h/m - 餈墧𦻖蝞∠<E89D9E>
  • HttpdnsNWHTTPClientResponse - <20><EFBFBD><E79285>

韐∠讃<EFBFBD><EFBFBD><EFBFBD>

瘛餃<EFBFBD><EFBFBD><EFBFBD>霂閙𧒄嚗諹窈<EFBFBD>萄儐嚗?

  1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗䫤test`
  2. 雿輻鍂 #pragma mark<><E89D8F>瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD>
  3. 瘛餃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡃏秩<EFBFBD><EFBFBD>霂閧𤌍<EFBFBD>?
  4. 撉諹<EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>湔鰵<EFBFBD><EFBFBD>獢?

**<2A><><EFBFBD>擧凒<E693A7>?: 2025-11-01 瘚贝<EFBFBD><EFBFBD>: XCTest + OCMock **蝏湔擪<E6B994>?: Claude Code

<EFBFBD>湔鰵<EFBFBD><EFBFBD>:

  • 2025-11-01: <20><EFBFBD> 15 銝芸<E98A9D>蝡臬藁餈墧𦻖憭滨鍂瘚贝<E7989A>嚗𠃋<E59A97><F0A0838B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E89D8F>嚗峕<E59A97>霂閙<E99C82>餅㺭憓噼秐 37 銝?
  • 2025-11-01: Mock server <20><EFBFBD> 3 銝?HTTPS 蝡臬藁嚗?1444-11446嚗厩鍂鈭擧<E988AD>霂閗<E99C82><E99697><EFBFBD><E4BAA4>𠉛氖
  • 2025-11-01: <20><EFBFBD><E595A3>砍𧑐 mock server嚗峕𤜯隞?httpbin.org嚗峕<E59A97>靘𤤿迅摰𡁏<E691B0>霂閧㴓憓?
  • 2025-11-01: <20><EFBFBD> 15 銝芸僎<E88AB8><EFBFBD><E3BBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>餈墧𦻖憭滨鍂<E6BBA8><E98D82><EFBFBD>瘚贝<E7989A>嚗𠃍<E59A97><F0A0838D><EFBFBD><EFBFBD><EFBFBD><E89D8F>