private static void Main(string[] args) { var assemblyLauncher = new AssemblyLauncher(); var result1 = assemblyLauncher.Execute <BizLogicObjcet, object>(new BizLogicObjcet(), "GetString"); Console.WriteLine(JsonSerializer.Serialize(result1)); var result2 = assemblyLauncher.Execute <BizLogicObjcet, object>( new BizLogicObjcet(), "GetStringWithParamter", JsonSerializer.Serialize(new { Name = "Hello World" }) ); Console.WriteLine(JsonSerializer.Serialize(result2)); try { var result3 = assemblyLauncher.Execute <BizLogicObjcet, object>( new BizLogicObjcet(), "GetStringWith2Paramter", string.Concat( JsonSerializer.Serialize(new { Name = "Hello World1" }), JsonSerializer.Serialize(new { Name = "Hello World2" })) ); Console.WriteLine(JsonSerializer.Serialize(result3)); } catch (Exception e) { Console.WriteLine(e.Message); } }
public void TestExecute() { var stubMethod = AssemblyLauncher.Execute <StubBizLogic, string>(StubBizLogic, "StubMethod"); Assert.AreEqual("Result", stubMethod.Message); var stubMethodWithParameter = AssemblyLauncher.Execute <StubBizLogic, string>(StubBizLogic, "StubMethodWithParameter", "'parameter'"); Assert.AreEqual("Result with parameter", stubMethodWithParameter.Message); }
public void TestJsonException() { try { AssemblyLauncher.Execute <StubBizLogic, string>(StubBizLogic, "StubMethodWithParameter", "{parameter: wrong}"); Assert.Fail("應該拋出一個例外"); } catch (Exception e) { Assert.AreEqual("JSON 參數反序列化錯誤,UnitTestProject.StubBizLogic 的 StubMethodWithParameter 組件方法所需參數型別應為: System.String", e.Message); } }
public void TestTooManyParametersException() { try { AssemblyLauncher.Execute <StubBizLogic, string>(StubBizLogic, "StubMethodWithTooManyParameter", "'parameter'"); Assert.Fail("應該拋出一個例外"); } catch (Exception e) { Assert.AreEqual("依照設計規範 UnitTestProject.StubBizLogic 的 StubMethodWithTooManyParameter 組件方法只能傳入一個參數", e.Message); } }
public IHttpActionResult Getcode(string GetToken) { try { //AssemblyLauncher AssemblyLauncher assemblyLauncher = new AssemblyLauncher(); //執行指定的Method var ret = assemblyLauncher.ExecuteCommand <GetToken>( new GetToken(), GetToken, Request.Content.ReadAsStringAsync().Result); //回傳OK return(Ok(ret)); } catch (Exception ex) { //其他處理 throw ex; } }
public IHttpActionResult ExecuteMethod(string MethodName) { try { //AssemblyLauncher AssemblyLauncher assemblyLauncher = new AssemblyLauncher(); //執行指定的Method var ret = assemblyLauncher.ExecuteCommand <TestClassA>( new TestClassA(), MethodName, Request.Content.ReadAsStringAsync().Result); //回傳OK return(Ok(ret)); } catch (Exception ex) { //其他處理 throw ex; } }
public IHttpActionResult ExecuteMethod(string ChangeJSONFile) { try { //AssemblyLauncher AssemblyLauncher assemblyLauncher = new AssemblyLauncher(); //執行指定的Method var ret = assemblyLauncher.ExecuteCommand <Change>( new Change(), ChangeJSONFile, Request.Content.ReadAsStringAsync().Result); //回傳OK return(Ok(ret)); } catch (Exception ex) { //其他處理 throw ex; } }
public void TestNotReturnTypeofIExecuteResultException() { try { AssemblyLauncher.Execute <StubBizLogic, string>(StubBizLogic, "StubMethod2"); Assert.Fail("應該拋出一個例外"); } catch (Exception e) { Assert.AreEqual("依照設計規範 UnitTestProject.StubBizLogic 的 StubMethod2 組件方法必須回傳繼承自 IExecuteResult<T> 介面的物件,可將該組件方法的回傳型別改為 DefaultExecuteResult", e.Message); } try { AssemblyLauncher.Execute <StubBizLogic, string>(StubBizLogic, "StubMethodWithParameter2", "'parameter'"); Assert.Fail("應該拋出一個例外"); } catch (Exception e) { Assert.AreEqual("依照設計規範 UnitTestProject.StubBizLogic 的 StubMethodWithParameter2 組件方法必須回傳繼承自 IExecuteResult<T> 介面的物件,可將該組件方法的回傳型別改為 DefaultExecuteResult", e.Message); } }
public async Task <IHttpActionResult> PostFormData(string sMethodName) { var oController = new BSBulletin(); bool bNewController = Request.Content.IsMimeMultipartContent(); // 新舊版Controller (舊:DATA:Object, 新:DATA:FormData) bool bHasFile = false; string sJsonData = ""; // Cookies var vCookies = Request.Headers.GetCookies("accountid"); string sAccountID = (0 < vCookies.Count) ? vCookies[0]["accountid"].Value : ""; if (bNewController) { JObject oTempJObject = new JObject(); var filesReadToProvider = await Request.Content.ReadAsMultipartAsync(); foreach (var content in filesReadToProvider.Contents) { if (!string.IsNullOrEmpty(content.Headers.ContentDisposition.FileName)) { using (Stream stream = await content.ReadAsStreamAsync()) { byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); } } else { string key = content.Headers.ContentDisposition.Name.Replace(@"""", ""); string val = await content.ReadAsStringAsync(); oTempJObject.Add(new JProperty(key, val)); switch (key) { case "hasfile": bHasFile = Convert.ToBoolean(val); break; } } } // modified_user addDataToTempJObject(ref oTempJObject, "modified_user", sAccountID); sJsonData = JsonConvert.SerializeObject(oTempJObject); } else { sJsonData = Request.Content.ReadAsStringAsync().Result; // modified_user if (!sAccountID.Equals("")) { JObject oTempJObject = JObject.Parse(sJsonData); addDataToTempJObject(ref oTempJObject, "modified_user", sAccountID); sJsonData = JsonConvert.SerializeObject(oTempJObject); } } try { AssemblyLauncher assemblyLauncher = new AssemblyLauncher(); var ret = assemblyLauncher.ExecuteCommand(oController, sMethodName, sJsonData); if (bNewController && "SaveDetail" == sMethodName && bHasFile) { var oNewData = ((ExecuteCommandDefaultResult)ret).Data; var sNewID = ((JProperty)((JContainer)oNewData).First).Value; // 第一個回傳值必須是Pkey JObject oParam = new JObject(); oParam["mode"] = "Edit"; oParam["id"] = sNewID; string sJsonParam = JsonConvert.SerializeObject(oParam); assemblyLauncher.ExecuteCommand(new BSFile(), "FileUpload", sJsonParam); } return(Ok(ret)); } catch (Exception ex) { throw ex; } }
public void TestReturnType() { var stubMethod = AssemblyLauncher.Execute <StubBizLogic, string>(StubBizLogic, "StubMethod"); Assert.IsInstanceOfType(stubMethod, typeof(IExecuteResult <string>)); }
public AssemblyLauncherUnitTest() { AssemblyLauncher = new AssemblyLauncher(); StubBizLogic = new StubBizLogic(); }