1.EasyMock简介:
手动的构造 Mock 对象会给开发人员带来额外的编码量,而且这些为创建 Mock 对象而编写的代码很有可能引入错误。目前,有许多开源项目对动态构建 Mock 对象提供了支持,这些项目能够根据现有的接口或类动态生成,这样不仅能避免额外的编码工作,同时也降低了引入错误的可能。
EasyMock是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。这次我们要在本地搭建easymock服务,方便使用。
2.安装配置
前提:centos 64位
2.1 nodejs安装
#下载安装包
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
配置环境变量:
#打开系统配置文件
vi /etc/profile
#最下方添加如下代码:
#set node
export NODE_HOME=/usr/local/node
export PATH=$PATH:$NODE_HOME/bin
#保存并退出
#使环境变量生效
source /etc/profile
校验是否成功:
node -v
坑一:报错-----bash: /usr/local/node/bin/node: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
解决办法:执行如下命令
yum -y install glibc.i686
坑二:报错-----node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
解决办法:执行如下命令
yum -y install libstdc++.so.6
再次运行:node -v,出现以下页面说明成功;
2.2 更新npm
npm install npm@latest -g
2.3 安装redis
#选择目录(如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:
# 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
2.4 安装mongdb
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
2.5 安装EasyMock
#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,界面如下所示:
来源:oschina
链接:https://my.oschina.net/u/4283481/blog/4133666