فهرست منبع

test(d2-02-t3): 补委托抛异常兜底单测(守护取培养态失败不阻断借用)+ Acquire 元组改具名访问

huangjie 2 روز پیش
والد
کامیت
8b4624b479

+ 16 - 0
ivf_tl_operate_2.0/control/IvfTl.ControlHost.Tests/DebugAcquireCultivationTests.cs

@@ -62,5 +62,21 @@ namespace IvfTl.ControlHost.Tests
             Assert.IsType<string>(r.Result);
             Assert.False(string.IsNullOrEmpty((string)r.Result));
         }
+
+        [Fact]
+        public void Acquire_CultivationProviderThrows_DoesNotBlockAcquire()
+        {
+            var gate = new FakeGate(6, new FakeSerial());
+            // 业务红线:取培养态炸了也绝不能阻断借用本身(锁死 Acquire 里的 try-catch 兜底语义)
+            var mgr = NewMgr(gate, sn => throw new Exception("模拟取培养态失败"));
+
+            var r = mgr.Acquire(6);
+
+            Assert.True(r.Ok);              // 借用仍成功
+            Assert.False(r.Cultivating);    // 兜底为默认 false
+            Assert.Equal(0, r.EmbryoCount); // 兜底为默认 0
+            Assert.IsType<string>(r.Result);
+            Assert.False(string.IsNullOrEmpty((string)r.Result));
+        }
     }
 }

+ 1 - 1
ivf_tl_operate_2.0/control/ivf_tl_ControlHost/Debug/DebugSessionManager.cs

@@ -33,7 +33,7 @@ namespace IvfTl.ControlHost.Debug
             var res = DebugCommandResult.Okay(sid);
             try
             {
-                if (_cultivationOf != null) { var c = _cultivationOf(houseSn); res.Cultivating = c.Item1; res.EmbryoCount = c.Item2; }
+                if (_cultivationOf != null) { var c = _cultivationOf(houseSn); res.Cultivating = c.cultivating; res.EmbryoCount = c.embryoCount; }
             }
             catch (Exception ex) { _log($"[debug] 取培养态异常 舱{houseSn}: {ex.Message}"); }
             _log($"[debug] acquire 舱{houseSn} sid={sid}");