手動的構造 Mock 對象會給開發人員帶來額外的編碼量,並且這些爲建立 Mock 對象而編寫的代碼頗有可能引入錯誤。目前,有許多開源項目對動態構建 Mock 對象提供了支持,這些項目可以根據現有的接口或類動態生成,這樣不只能避免額外的編碼工做,同時也下降了引入錯誤的可能。
EasyMock是一套用於經過簡單的方法對於給定的接口生成 Mock 對象的類庫。它提供對接口的模擬,可以經過錄制、回放、檢查三步來完成大致的測試過程,能夠驗證方法的調用種類、次數、順序,能夠令 Mock 對象返回指定的值或拋出指定異常。經過 EasyMock,咱們能夠方便的構造 Mock 對象從而使單元測試順利進行。此次咱們要在本地搭建easymock服務,方便使用。node
前提:centos 64位python
#下載安裝包 wget https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-x64.tar.gz #解壓 tar zxvf node-v9.9.0-linux-x64.tar.gz #移動到/usr/local/目錄下並更名 mv node-v9.9.0-linux-x64 /usr/local/node
配置環境變量:linux
#打開系統配置文件 vi /etc/profile #最下方添加以下代碼: #set node export NODE_HOME=/usr/local/node export PATH=$PATH:$NODE_HOME/bin #保存並退出 #使環境變量生效 source /etc/profile
校驗是否成功:c++
node -v
坑一:報錯-----bash: /usr/local/node/bin/node: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directorygit
解決辦法:執行以下命令github
yum -y install glibc.i686
坑二:報錯-----node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directoryredis
解決辦法:執行以下命令mongodb
yum -y install libstdc++.so.6
再次運行:node -v,出現如下頁面說明成功;數據庫
npm install npm@latest -g
#選擇目錄(如opt) cd /opt #下載redis壓縮包 wget http://download.redis.io/releases/redis-4.0.10.tar.gz #解壓 tar zxvf redis-4.0.10.tar.gz #重命名 mv redis-4.0.10 redis #切換目錄 cd redis #編譯 make make install
配置初始化腳本啓動redis:npm
# 1.配置初始化腳本 #複製utils下的redis_init_script初始化腳本文件到/etc/init.d目錄下bin更名,文件名爲redis_端口號 cp /opt/redis/utils/redis_init_script /etc/init.d/redis_6379 #修改腳本第6行的REDISPORT變量的值爲一樣的端口號。 #2.新建文件夾 #存放Redis的配置文件 mkdir /etc/redis #存放Redis的持久化文件 mkdir /var/redis mkdir /var/redis/6379 #3.修改配置文件 cp /opt/redis/redis.conf /etc/redis/6379.conf vi /etc/redis/6379.conf
修改配置文件以下:
redis開機啓動:
vi /etc/init.d/redis_6379 #在打開的redis初始化腳本文件頭部第四行的位置,追加下面兩句: # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database
追加後效果以下:
設置開機執行redis腳本:
chkconfig redis_6379 on
更改redis爲全部用戶都可訪問:
#打開配置文件 vi /etc/redis/6379.conf #找到bind 127.0.0.1這一行,修改成:bind 0.0.0.0 #保存後重啓redis service redis_6379 stop service redis_6379 start
mongdb安裝包:連接:https://pan.baidu.com/s/1Xu8qfgcdn2b-VvPHifIIpQ 密碼:51j5
上傳並解壓安裝包,複製到對應目錄中;
#先將安裝包上傳到服務器 #選擇存儲安裝包目錄 cd /opt #解壓 tar zxvf mongodb-linux-x86_64-rhel70-3.6.5.tgz #移動安裝包並更名 mv mongodb-linux-x86_64-rhel70-3.6.5 /usr/local/mongodb #切換到目錄下 cd /usr/local/mongodb
建立數據庫目錄和日誌文件:
#/usr/local/mongodb/建立數據庫目錄和日誌目錄 mkdir data #進入data目錄 cd data #建立兩個文件夾 mkdir db mkdir log cd log #創建日誌文件 touch logs.log
建立開機自啓動腳本文件:
vi /etc/init.d/mongodb
添加腳本內容:
#!/bin/bash # chkconfig: - 85 15 name=mongod path_bin=/usr/local/mongodb/bin/ path=/usr/local/mongodb/ case "$1" in start) ${path_bin}${name} --dbpath=${path}data/db --logpath=${path}data/log/logs.log --logappend --fork if [ $? -eq 0 ];then echo "${name}啓動成功..." else echo "${name}啓動失敗..." fi ;; stop) if [ $(ps -ef|grep "mongod" |grep "fork"|awk {'print $2'}) -gt 0 ];then kill `ps -ef|grep "mongod" |grep "fork"|awk {'print $2'}` if [ $? -eq 0 ];then echo "${name}中止成功" else echo "${name}中止失敗" fi else echo "${name}進程已經中止" fi ;; restart) if [ $(ps -ef|grep "mongod" |grep "fork"|awk {'print $2'}) -gt 0 ];then kill `ps -ef|grep "mongod" |grep "fork"|awk {'print $2'}` if [ $? -eq 0 ];then echo "${name}中止成功" else echo "${name}中止失敗" fi else echo "${name}進程已經中止" fi echo "${name}啓動中..." sleep 3s ${path_bin}${name} --dbpath=${path}data/db --logpath=${path}data/log/logs.log --logappend --fork if [ $? -eq 0 ];then echo "${name}重啓成功" else echo "${name}重啓失敗" fi ;; *) echo "${name}start|stop|restart" ;; esac
加入系統服務和開機啓動:
cd /etc/init.d/ #設置執行權限 chmod a+x mongodb #加入系統服務 chkconfig --add mongodb #開機服務自啓 chkconfig mongodb on #重啓系統生效 reboot now
坑一:啓動mongodb時會報錯libc.so.6: version `GLIBC_2.15' not found
#查看glibc庫版本 strings /lib64/libc.so.6 |grep GLIBC_ #能夠看到最高支持GLIBC_2.12,而程序須要GLIBC_2.15,因此須要升級 #選擇存儲目錄 cd /opt #下載gilbc2.15 wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz #解壓 tar -xvf glibc-2.15.tar.gz tar -xvf glibc-ports-2.15.tar.gz #將glibc-ports-2.15移動到glibc-2.15/ports目錄下 mv glibc-ports-2.15 glibc-2.15/ports #新建構建目錄 mkdir glibc-build-2.15 #切換目錄 cd glibc-build-2.15/ #編譯 ../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin make make install #查看軟鏈 ll /lib64/libc.so.6 #再次查看支持的版本 strings /lib64/libc.so.6 |grep GLIBC_
再次啓動:
service mongodb start
坑2:child process failed, exited with error number 100
#通常出現這個報錯都是由於鎖了 rm -rf /usr/local/mongodb/data/db/mongod.lock
坑3:child process failed, exited with error number 48
#進入到mongod的執行目錄,以修復模式啓動 cd /usr/local/mongodb/bin ./mongod --dbpath=/usr/local/mongodb/data/db/ --logpath=/usr/local/mongodb/data/log/logs.log --repair #進入到日誌目錄,刪除自動生成的日誌文件 cd ../data/log/ rm -rf logs.log.* #回到mongod的執行目錄,再次啓動 cd /usr/local/mongodb/bin ./mongod --dbpath=/usr/local/mongodb/data/db/ --logpath=/usr/local/mongodb/data/log/logs.log --fork
PS:手動啓動和關閉mongodb的命令:
service mongodb start service mongodb stop
#git下載安裝包 git clone https://github.com/easy-mock/easy-mock.git #切換目錄 cd easy-mock/ #安裝依賴 npm install ajv@^5.0.0 --unsafe-perm #安裝 npm install --unsafe-perm
新建配置文件:
vi config/local.json
文件內容以下:(其中APIPrefix改成本身對應的IP地址)
{ "port": 7300, "host": "0.0.0.0", "pageSize": 30, "proxy": false, "db": "mongodb://localhost:27017/easymockdb", "unsplashClientId": "", "APIPrefix":"http://192.168.198.132:7300/api", "redis": { "keyPrefix": "[Easy Mock]", "port": 6379, "host": "localhost", "password": "", "db": 0 }, "blackList": { "projects": [], "ips": [] }, "rateLimit": { "max": 1000, "duration": 1000 }, "jwt": { "expire": "14 days", "secret": "easy-mock-jwt-secret" }, "upload": { "types": [".jpg", ".jpeg", ".png", ".gif", ".json", ".yml", ".yaml"], "size": 5242880, "dir": "../public/upload", "expire": { "types": [".json", ".yml", ".yaml"], "day": -1 } }, "ldap": { "server": "", "bindDN": "", "password": "", "filter": { "base": "", "attributeName": "" } }, "fe": { "copyright": "", "storageNamespace": "easy-mock_", "timeout": 25000, "publicPath": "/dist/" } }
再次執行如下命令運行:
npm run build nohup npm run start &
訪問http://ip:7300,界面以下所示: