搜尋

搜尋結果

測試驅動開發 | 系統邊界Mock
科技新知
MacauYeah・2024-04-23

好一段日子之前,筆者就介紹了一些寫Test Case的大方向 。對於大部份情況來說,有分隔的開發環境,有整個配套,測試起來是順暢的,想做單元測試可以,做整合測試也可以。但如果沒有,我們其實也要想辦法寫Mock。 Mock這個概念,對於寫前端程式的朋友應該比較熟悉,因為前端開發者總不能等後端準備好之後,才開始慢慢設計。前端很早期就要模擬一些情況,做介面設計,做各種思考。而且這個Mock不是指在運行單元測試時,才使用的臨時修改隨機數據。而是針對開發時,自行模擬的後端或外部環境。不過因為前端介面涉及很多主觀設計,很多元素冇辦法做固定的自動測試,所以前端的測試通常要人幫測試。 而後端開發,邊界Mock這一概念也很有用。在外部環境不足的情況下,為自己系統的邊界部份自建一個Stub Dummy 等的模疑數據,是很有幫助的。不論我們對外部環境的掌控度有多少,我們走測試驅動開發(Test Driven Development),好好地定義這個外部環境的期待行為是很重要的。 例如,你有個功能,需要存入數據,但資料庫未準備好,也沒有所謂的In Memory資料庫可以用。這時,自己架空寫一個什麼都不做或回傳固定結果的函數作為中轉接口,然後在你的Test Case可以規劃你的想要結果。 也許你會說,這個函數就是存下資料,我不會需要它的回傳結果,但我們其實還是可以在Test case 中定義一些錯誤檢測,確保這個函數沒有Throw Exception 。再進一步想,我們主程式是否真的不負任何儲存失敗的責任?要定義其他回傳變數,方便寫Log讓追蹤?或者我們至少要知道成功後的Primary Key ?若然業務上真的不在乎儲存結果的有效性,我們不存入數據也是可以的? 所以歸根究底,我們還是在乎儲存的成功與否。還是有必要去驗證驗寫入是否成功。 上述例子,因為資料庫不存在,開發途中可能Test Case 有好長一段時間也通過不了,但至少當資料庫完備後,可以直接驗證,不用人手手工測試。 舉另外一個例子,我們要從某個地方,例如API或資料庫,讀取數據。我們也可以先寫中轉接口,並為它寫Test Case定義應有的行為。雖然明明就只是讀取,我們沒法控制太多。但在接口做好異常狀態處理,是很重要的。例如Handle exception、檢查某些重要業務值會不會是空、確保後續部份可以正常使用,這是因為我們不能被外部系統的失誤而導致自身系統癱瘓。 其實測試驅動,本質上就是強逼大家想多一點,好好定義預期的行為,不論內部條件怎樣變化,都有一自動的檢收標準。

葡餐推介 | 收藏!葡國餐廳大合集!深街窄巷中尋覓風情葡味!
澳城餐飲
食在澳門iFood・2021-02-14

澳門哩座神奇的城市 唔止有特色的本地美食 葡國菜亦係自成一派 深街窄巷尋覓風情葡味 「7間葡國餐廳大合集」 邂逅街頭貌不驚人的葡式餐廳 領略不一樣的小情調 ▼ 葡角 康泰餐廳 葡韻軒咖啡美食 扒皇燒 Frangi's Gril 山度士葡式餐廳 九魚舫 澳門瑞吉酒店・雅舍餐廳 01 葡角餐廳 地址:澳門沙梨頭南街及飛喇士街403號 寶翠花園利星閣地下(筷子基) 電話:(853)28234488 營業時間:12001430(星期一至星期六) 一生沒有宴飲,就好似長路漫漫的途中沒有旅店。「葡角」訓練餐廳以獨有的slogan,「Soul Food So Good」mdash;mdash;即ldquo;豐盛人生rdquo;深深俘獲我心。 經典的葡式小食mdash;mdash;葡角,亦係哩間餐廳的店名。兩個半圓葡角可以組成一個圓,似人生常態,時盈時缺卻依舊圓滿 傳統的葡國料理沿襲著濃郁風味的style,而經典的土生葡人菜融合咗澳門風味,更作傳承。 隨手勺起一羹,都係肉眼可見的金黃色澤,葡國雞的魅力顯而易見!焗鴨飯咀嚼間隨時嚼得到的鴨肉,讓口感層次不斷升級 02 康泰餐廳 地址:澳門十月初五街177179 電話:28923923 營業時間:11000130 葡國菜係澳門地道的代表性食物之一,街道上大大小小的葡國餐廳,彰顯著葡國菜喺澳門人們心中的地位 位於十月初五街上的一隅,餐廳裝潢簡約大方的「康泰餐廳」,散發著獨有的葡式風情,令人不禁想要探尋其中的奧妙 經典的紅酒牛尾和德式紅燒鹹豬手係食肉獸的最愛肉質飽滿的牌方豬肋骨和香草羊安,擺盤優雅又精緻,濃濃的地中海風情極具誘惑 03 葡韻軒咖啡美食 地址:澳門崗陵街8號地下 電話:28307777 營業時間:08002100(週二至週六)、10002100(週一) 融合澳門特色的葡國菜出品,由葡韻軒帶俾你! 經典的葡式焗鴨飯同海鮮燴飯,鹹油香氣充斥口腔,飽腹感滿滿燒牛肋骨、燒馬介休魚係肉類帶俾你特有的味蕾享受! 04 扒皇燒 Frangi's Gril 地址:氹仔地堡街41和47號泉福新邨第2期第四座偉展閣WX鋪地下(大豐銀行旁邊) 電話:28992288 營業時間:11302230 扒皇燒將傳統葡式味由家庭食譜搬入餐廳內,讓食客於澳門都可以盡情享受地道葡式美食! 椰菜、牛展、豬耳、鮮雞等傳統食材烹飪而成的土生大雜燴Tacho係經典的葡國菜式之一湯底呈奶白色,膠質感滿滿 土生葡菜的家庭食譜裡,最經典的佐料就係酒同橄欖油,ldquo;一酒一油走天下rdquo;燴成一份龍蝦白酒海鮮湯飯! 龍蝦、鮑魚、鮮蝦、白蜆等海鮮藏身於此!Q彈可口、鮮味十足,獨特的葡式做法更加畫龍點睛! 05 山度士葡式餐廳 地址:氹仔官也街20號 營業時間:12001500、18302200 電話:28827508、28825594 位於官也街的正宗葡國餐廳山度士葡式餐廳,無論係環境亦或出品,都散發著濃濃葡式風情 大塊牛柳與青紅椒一起炭燒的串燒牛柳特顯葡式風格的豪爽與大方,經典葡式焗鴨飯,由食材到烹調都係ldquo;原裝進口rdquo;,只為呈現出最完美的口感! 06 九魚舫 地址:澳門白馬行37號 電話:28250194 營業時間:12002200 九魚舫係位於白馬行三樓的一間葡國餐廳,每日客如雲來,只為一品澳門前總督御廚的手勢! 九魚舫的主廚盧子成先生曾經連任七屆澳門總督府總廚,從事廚房工作的48年間獲得眾多榮譽! 芥末焗羊鞍係九魚舫的招牌菜,空中飛舞的火花係美妙的前奏,滋滋冒煙的響聲作為鋪墊,美味即將登場! 羊鞍肉厚而不硬,用焗烤的方式將羊鞍的原汁原味牢牢鎖住,香溢口腔 又一道地道傳統的葡國菜式非洲辣雞,經過改良後的非洲辣雞更易入口,別具一格 葡國海洋飯鋪滿大蝦、元貝、魷魚等海鮮,米飯浸泡於色澤誘人的湯汁中,香氣逼人! 07 澳門瑞吉酒店・雅舍餐廳 地址:澳門瑞吉金沙城中心酒店1層 電話:81132777 營業時間:早餐06301030、午餐12001500、晚餐18002300 高貴的燈光、優雅的裝點,哩度就係澳門瑞吉酒店「雅舍」餐廳。 各式精緻煎炸美點、糕點及蒸點心,包括石鑿、炸角仔、粉果等,喺如夢如幻的餐廳,品嚐一頓葡式風味美食 由豬皮、臘鴨腿、臘腸、椰菜等主要食材熬煮的傳統豬皮大雜燴,讓人感受家鄉澳葡味道! END 圖片|胖農夫的奶茶 攝影|嚕嚕米

Hea食主義 - 「神經餵飼 Feed Your Nerves」香港文青+文創Cafe
全球飲食
青BB・2016-11-05

「神經餵飼」藏身於香港太子站出口附近,主打Fusion創新定食、沙律、大碗飯、三文治......二樓放置了各類文青手作小品,適合希望在旺市中尋找寧靜一角餵飼神經的你~ Hea食指數爆燈 1.盞鬼店名,清新裝修,妙想天開的fusion菜單,不禁令人喜愛的cafe小天地!這除了能餵飽小胃,更能好好餵飼神經緊張的都市人,Hea坐聖地_ Cafe分為兩層,地下是開放式廚房,能看到至少有三位店員為客人料理菜單,所以上菜速度不慢喔!陽光明媚的週末坐在地下靠窗的位置,寫意無限~ 而樓上則是親民地板Hea坐用餐區手作文創展示專區,閒時放空首選~ 2.重點來了, 「神經餵飼」的好吃推薦?嗯。。。其實我也不太清楚(笑)因為菜單好像是每天換的,小編兩次都是週日拜訪,沒看到有相同的菜單,唯有飲料是固定的,吃的嘛就看運氣了。菜式糅合了各國特色食材和烹調方法,有點小驚喜之餘味道也踏實、好吃~ uarr;uarr; 某週日的餐牌 好像每天都在變喔 uarr;uarr; uarr;uarr; 某週日菜式 「貓毛定食」uarr;uarr; uarr;uarr;某週日菜式 「冬陰公忌廉雞肉燴飯」 uarr;uarr; uarr;uarr; 某週日菜式 「無花果OH巴馬火腿salad」 uarr;uarr; uarr;uarr;右上 冰蜜桃茶(推薦)uarr;uarr; uarr;uarr;右下 雜莓蜜桃梳打(推薦)uarr;uarr; 飲品都很足料, 抵飲~ 3.文創愛好者請往二樓雅座 與水泥色為主調的樓下相比,採用原木色作基調及日式坐地用餐的二樓便格外親切了。加上擺放了一系列文創小商品,賣買是其次,養眼是重點~ 餐廳名字:神經餵飼 Feed your Nerves地點:香港旺角砵蘭街434號地舖(香港太子站D出口處轉右直行1分鐘)食物類型:Fusion, 文青Cafe, 文創小商品預算:約HKD120 (中午)

往貝加爾湖 ‧ 西伯利亞沿途之無盡草原與無限風光
走遍世界
莫雪・2019-07-15

往貝加爾湖 ‧ 西伯利亞沿途之無盡草原與無限風光 無限風景在路邊, 且是非內蒙古草原可比美焉 往貝加爾湖 ‧ 西伯利亞沿路, 自駕遊走於貝加爾湖沿湖城市與小鎮, 途中, 經過了...... 別以為是培植花場什麼的, 原來是讓牛、羊吃的草場, 只是草長高了便出花而已 幸福的牛羊呀.. 眼睛享受著飽飽 途經一處一處出塵般綠草叢叢, 掩映错緻的村落, 一陣雨後, 你會迎來雨後彩虹, 本來已是澄凈的天空再劃上色彩, 空氣充滿野草野花的紛香 無數一片片廣闊像 哥爾夫球場草披且還有粉粉野花 一大片, 一大片地讓你蹤情極目 這 ...... 只是一條通往貝加爾湖沿湖城市與小鎮道路的二旁, 怎麼可以這樣美的不要不要.. 草原可有盡頭不 極目看到的好像跟湛藍湛藍的 天邊連成一條長長線似, 感受到的, 是天地滄汒 途中 你會偶然見到一小群, 一小群的牛呀、奶牛呀、羊呀 優遊自在地吃著草或是橫過馬路 上天賦與花花與肥美草食, 食糧也實在太多太廣了吧 西伯利亞的牛、羊群是怎麼吃也吃不盡的喎 偶爾見到的一群、一群放牧著的牛、羊, 有廣大而吃不了的無盡草披, 那會變成怎麼樣 就讓她長高了枯幹成淒美一片枯草吧.. 幸運地, 那天離開奧利洪島往沿湖小鎮 斯特維揚卡的路途上, 出奇地見到有那麼多人、那麼多車聚集的 原來是遇上俄羅斯烏蘭烏德草原賽事 那達慕競技盛會, 噢噢... 快馬加辮 俄羅斯的蒙古族人多居於此 ndash; 外貝加爾邊疆區 #通關 中俄口岸# #廣島四國單車自駕# 【編輯聲明】 本篇文章、相片版權屬作者所有,經由版權持有人授權CyberCTM.com發表 聯絡及邀約 irene801802@hotmail.com

Spring boot web api 異常處理
科技新知
MacauYeah・2025-10-28

我們在編寫程式時,經常會遇到一些極端的情況,不會經過 function 的方式回傳結果。例如一個 function 原本是提供讀檔功能,但用戶傳入的並不是一個有效的檔案路徑,又或是誰路徑權限不足,無法讀取。這些不正常的結果,並不是原本 function 所協定的回傳值。那麼,我們會拋出異常 Exception ,中斷所有被呼叫中的 function ,讓上層用戶去考慮怎樣處理這個問題。 在 Web API 中,這些 Exception 就更常見。要求用戶傳入的參數,用戶就是有時候少了幾個。覆寫資料的時候,原本的資料已被刪除。但我們現在是經過 Web Api,不能像過去一直向上拋出異常就能通知用戶。我們需要的,是把異常轉成對應的 Http Status Code,讓用戶端可以快速識別異常的類型。 java 異常對應 Http Response Code 其實在 spring boot web 中,要做轉譯,是很簡單的。在定義 java Exception的時候,若有@ResponseStatus,spring boot web 就會自動回應對應的 http error code。 @ResponseStatusHttpStatus.FORBIDDEN public class CustomAuthenticationException extends RuntimeException public CustomAuthenticationException public CustomAuthenticationExceptionString message supermessage; 以後,任何一個地方拋出 CustomAuthenticationException (假設上層沒有人攔截)都會把該 Controller 的結果改為 http 403。Spring boot 也很聰明的,把異常中的 message 隱藏 ,免得有網安的問題。 若我們定義 Exception 時,沒有@ResponseStatus,Controller 就會變成 http 500,例如我在 controller 中拋個常見的 IOException,這次的結果就會變成 http 500。 @GetMappingquot;apiioErrorquot; public String forceIOException throws IOException throw new IOExceptionquot;force io errorquot;; 如果某些時候,我們想使用 java Exception 中的 message 欄位作為報錯信息,讓 http 客戶端,可以通過固定的 message 檔位找到問題訊息,我們可以在application.properties中,加入server.error.includemessage=always。有些特殊情況,在開發模式時 mvn springbootrun ,已經可以見到有 Exception message,但在投産後java jar又看不到。主要因為開發模式中, pom 有 optional springbootdevtools,會自動加入了server.error.includemessage=always,但 mvn package 後就沒有,因為 runtime 沒有 springbootdevtools 的覆蓋。 額外處理 異常處理除了想控制 http status code 外,有時還需要做一些額外處理,例如發出通知郵件等。若想做額外處理,需要另做一個 @RestControllerAdvice 的類,在接到指定的 exception 時,可以轉換不同的 http code ,而且還可以執行額外 java code ,改變 http ResponseBody 。 @RestControllerAdvice public class GlobalExceptionHandler @ExceptionHandlervalue = RuntimeException.class @ResponseStatusHttpStatus.INTERNAL_SERVER_ERROR public Map handleRuntimeExceptionException ex return Map.ofquot;retquot;, false, quot;anyfieldsquot;, ex.getMessage; 但要注意,一旦使用@RestControllerAdvice 後,就要考慮有沒有改變了某些預設的行為。例如上述的@ExceptionHandlervalue = RuntimeException.class,代表所有RuntimException.class的子類,都會歸由該 function 所處理。當然,你也可以多加幾個 function 來處理不同的子類。 Reference springbootwebapivalidate

走進魔法鎮 -- 蘇格蘭《哈利波特》蒸氣火車
環宇搜奇
莫雪・2021-12-14

走進魔法鎮 蘇格蘭《哈利波特》蒸氣火車 蘇格蘭 Fort William 蒸氣煤炭小火車, 坐落在全英國 最高的山Ben Nevis山腳的一個小鎮, 也是傳說中魔法學校經過並且進入的第四個站 《哈利波特》, 亦是歐洲ldquo;最佳火車之旅rdquo;之一; 站尾是個美麗漁村小鎮 Mallaig。 行程到了魔法鎮Fort William當天, 我們提早了一個半小時往火車站現場排隊, 以便能順利購得《哈利波特》火車票, 感受見證一次《哈利波特》 這個足夠經典的蒸氣火車, 於格籣芬南高架橋上進行大轉彎。 火車全程1.5小時, 尾站是小鎮Mallaig亦是個美麗漁村港口小鎮。 列車上, 我們急不及待, 各人各自找個靠窗有利位置, 盡覽沿途風光, 或是捕捉列車經過的美景, 探頭窗外留影一番。 浮想一下畫面 ~ 像在電影中穿梭西高地線上最著名的段落, 坐下的車廂彷彿便置身魔法世界, 和其他學生一起回霍格華茲上課了嗎 沿途經過的盡是蘇格蘭一些美麗、 令眾人讚嘆不已的風景,而有些風景也曾在電影中出現過。 仲夏時分, 依然涼風習習, 典型歐陸氣候, 好不舒暢。 而我們旅途上自駕的路上, 往往便遇上怡人風景及別緻的房子。 經過的大橋, 便是位於蘇格蘭西部高地的格籣芬南大橋。 大橋建於1897年至1901年間,至今已經有一百多年的歷史。 而這裡已經成為各地哈利波特迷到英國幾乎是必去朝聖景點之一了。 一眾夥伴們亦是熱切期待著名作家羅琳筆下的哈利波特魔法之旅。 尤其是電影中Fort William有輛特快列車穿越蘇格蘭高地, 著名的景點包括格籣芬南高架橋,現在身處正正這輛列車, 感覺夢幻, 充滿期待的一個半小時, 我管它叫「夢幻號」吧 Fort William蒸汽小火車每年 5月至10月才開動營運的, 而此段時間又分兩種情況,平日每天一班,高峰時節每天兩班, 可能有些日期週末是沒有小火車的,想看小火車的粉絲要在出發前網上先查好時間喔! 蒸汽小火車在經過大橋時, 會放慢速度,並且會噴出蒸氣, 非常吸力地為魔法之旅添上氣氛 列車到達尾站,, 悠逛漁村小鎮Mallaig, 美麗且繁忙的漁港和渡輪碼頭港口, 嚐魚味濃炸魚塊和薯條, 看海鷗飛舞拍岸來回; 望小鎮上一片間間色彩充滿雅緻英式房屋; 聽鎮上街頭音樂演出者妙曼作曲, 投入至旁若無。 魔法鎮 蘇格蘭《哈利波特》 蒸氣火車「夢 幻 號」之旅, 依依不捨不願有停站的追夢之旅 #菲林形狀棧道# #蘇格蘭尼斯湖# 【編輯聲明】 本篇文章、相片版權屬作者所有,經由版權持有人授權CyberCTM.com發表。 聯絡及邀約 irene801802@hotmail.com

澳門抵飲勝選$100兩杯酒及份小食
澳城餐飲
行走世界記錄・2019-08-07

這個時勢,甚麼都貴! 不知道 $100 可以買到的東西有幾多?如果在澳門可以在五星級酒店的酒吧,2人飲一杯雞尾酒及吃一盤小食,一個字:抵! 金麗華酒店乘風廊酒吧,環境清雅,三面單邊,三五知己飲一杯好去處。今年夏天,乘風廊推出一系列清爽怡人的雞尾酒及特飲。價格由澳門幣58元起。 特別推介一個夏日優惠組合,2杯酒加小食只需澳門幣$100元!酒有六款,三款Cocktail 雞尾酒: Fresco Fizz 仲夏夜麗影,由日本清酒,馬蒂尼雞尾酒,新鮮黃瓜,酸橙,檸檬和自製檸檬草糖漿組成。 Vasco Margarita 乘風廊瑪格麗特,由龍舌蘭酒,橙味利口酒,鮮檸檬和蜂蜜蜂蜜糖漿組成。 Grand Lapa Colada 金麗華椰香特飲,爽口菠蘿雞尾酒,朗姆酒,椰子奶油,芒果利口酒和金麗華自製的酒。 另三款為無酒精雞尾酒Mocktail: 冰卡布奇諾夏季飲料,由咸焦糖,彊餅乾,新鮮牛奶和釀造黑咖啡調配而成。 Cucumber Lemonade 綠野仙蹤,由新鮮的黃瓜汁,檸檬,酸橙和薑汁啤酒調配而成。 HiEnergy 能量之源,熱帶百香果和葡萄柚汁配紅牛。 小食拼盤包括:黑毛豬配自家製蕃茄漿小土司、菲達芝士及義大利黑醋粒伴西爪、砂拉越胡椒霜燒吞拿魚配菠蘿。 費用需另加10%服務費及5%政府稅 地址 :澳門友誼大馬路9561110號 營業時間下午 3 時至凌晨 12時 星期日至四下午 3 時至凌晨 2時 星期五至六 電話853 8793 3831 更多相片在 Facebook 行走世界記錄 原文 請點