日期: 2022-09-20 15:24:47 浏览数:3

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
扬中申请400电话费用【扬中企业全国热线电话办理】扬中开通400电话电信价格、扬中微信公众号代运营外包托管、扬中网店编辑装修美工、扬中网站推广优化大概需要多少钱
扬中,江苏省辖县级市,由镇江市代管。位于镇江市东部江心,黄金水道——长江中下游,苏南现代化建设示范区内,是南京都市圈成员县级城市,“北面与扬州、泰州隔江相望,南面与镇江、常州一衣带水。全市由太平洲、中心沙、西沙岛、雷公岛四个江岛组成,总面积332平方公里,其中陆地面积228平方公里。扬中城市建成区面积13.9平方公里,滨江新城规划建设面积6.8平方公里,城镇化率达64.26%。 [1] 拥有可开发深水岸线54公里。 [1] 下辖4个镇、2个街道 [2] 、扬中经开区和扬中高新区,总人口34万,在镇江发展全局中具有重要地位。
扬中产业特色鲜明,是远近闻名的“电气岛”、“光伏岛”,“长江制造业走廊”其中电气领域更是中国最大的工程电气原料市场,并被授予“中国工程电气名城”,扬中先后荣获“国家卫生城市"、“国家生态市”和“国家园林城市”,“国家环保模范城市”通过国家级考核验收。 [2] 2019年人均地区生产总值14.15万元 [3] 。连续两年列镇江市高质量发展考核一等奖第一名,位列2019年度“全国中小城市综合实力百强县(市)”第23位。 [3]
扬中农村别墅特色鲜明,西班牙驻华参赞夫人克里斯蒂娜夫人以及摩洛哥驻华公使等28个国家的60余位驻华使节曾到此参观留念。
扬中的城市精神是“上善若水,自强不息。”
Tests$ phpunit ... ...OK (15 tests, 20 assertions)复制代码
如果细细观察,会发现上面实现的代码是很脆弱的。线上环境之所以出现问题,往往是因为我们在前面思考得还不够全面,还不够深入。若在开发阶段,通过测试驱动开发,提前预测或者思考日后线上可能发生的问题的话,那么我们开发的代码就能具有更强大的生存和适应能力。
为了编写出更全面的测试用例,这里分享一下在《测试》一书中讲到的三角验证。
三角验证思路很简单,首先编写一个正常数据处理的测试用例,再编写另外一个正常数据处理的测试用例,最后编写一个失败或异常的测试用例。通过不同的维度,对待测试的类进行全方位的测试。
例如,继续前面获取评论的单元测试,我们先手动追加一条测试数据。
INSERT INTO `pa_comment` VALUES ('2', '欢迎阅读《初识PhalApi》~');复制代码前面对于接口类Api_Comment的单元测试,已经测试了获取评论ID为1的数据,现在让我们再来添加获取评论ID为2的数据,并进行验证。
// Tests$ vim ./Api/Api_Comment_Test.php
public function testGetAgain()
{
$url = 'service=Comment.Get';
$params = array('id' => 2);
$rs = PhalApi_Helper_TestRunner::go($url, $params);
$this->assertEquals(2, $rs['id']);
$this->assertArrayHasKey('content', $rs);
}复制代码再次执行此单元测试,验证通过。
有读者可能会觉得添加对评论ID为2的获取验证,显得多此一举。确实是有一点,这是因为我们的评论接口服务功能已经开发完成。而三解验证主要是应用在测试驱动开发阶段,即在功能未开发完成的时候。还记得,我们最初模拟获取评论的实现代码吗?它是这样的:
public function get() {
return array('id' => $this->id, 'content' => '模拟获取:评论内容');
}复制代码对于这样的情况,上面的测试是有效的。因为它发现了我们正在“造假”,而不是返回真正的业务数据。
继续往前,除了正常情况外,我们还要验证失败或异常情况时,接口服务能否按预期那样响应。例如接口参数非法时怎么办,业务数据不存时怎么处理,调用第三方接口服务超时如何响应,数据库连接不上时如何降级等。对于此获取评论的接口,让我们来验证一下获取一个不存在的评论内容时,是否能按期望那样返回一个空数组。
先添加多一个测试用例,故意获取一个不存在的评论。
// Tests$ vim ./Api/Api_Comment_Test.php
public function testGetNotExists()
{
$url = 'service=Comment.Get';
$params = array('id' => 404);
$rs = PhalApi_Helper_TestRunner::go($url, $params);
$this->assertSame(array(), $rs);
}复制代码需要注意的是,最后的断言,使用的是assertSame(),保证返回的结果的值和类型都是对的,即应该是空数组,不是FALSE,也不是0,更不是NULL。
这里,再次执行此单元测试,会发现,断言失败了!
1) PhpUnderControl_ApiComment_Test::testGetNotExistsFailed asserting that false is identical to Array &0 ().复制代码
这表明,前面看似能很好工作的代码,并没有完全按照我们的期望提供服务。而这个问题最终有可能会导致什么问题呢?这要视具体的业务而定,但如果约定在未找到评论时返回空数组,实际上却返回的是布尔值FALSE,在使用Javascript、Java或者Object-C开发的客户端就可能会产生一些奇怪的问题,甚至会导致客户端崩溃。因为返回的类型与预期的不一致。还好,我们及时发现了这个问题。
归其原因,是因为NotORM在向数据库获取数据时,若数据纪录不存在,会返回FALSE。知道了问题所在和对应的原因后,要修改优化就很容易了,只需要在Domain层对Model返回的数据进行判断即可。
// $ vim ./Shop/Domain/Comment.php <?phpclass Domain_Comment {
public function get($id) {
$model = new Model_Comment();
$rs = $model->get($id);
// 判断数据有效性
return !empty($rs) ? $rs : array();
}}复制代码当然,三角验证不是意味着只有三个测试用例,而是从不同的维度进行验证,包括正常的场景,失败的场景,异常的场景等等。通俗来说,就是想尽一切办法,通过不同的方式验证你的代码的正确性。又比如,对于未传递评论ID或者传递了错误的评论ID时,让我们来验证一下是否如期返回错误提示。
// Tests$ vim ./Api/Api_Comment_Test.php
/**
* @expectedException PhalApi_Exception_BadRequest
*/
public function testGetWithWrongId()
{
$url = 'service=Comment.Get';
$params = array('id' => 'a_wrong_id');
$rs = PhalApi_Helper_TestRunner::go($url, $params);
}复制代码在上面的测试用例中,我们故意传递了值为“a_wrong_id”的评论ID,显然这是错误的参数,并且应该抛出PhalApi_Exception_BadRequest异常,所以我们通过@expectedException注解对此进行了断言。
随着单元测试的不断完善,和生产品代码的不断演进,最后我们将会得到更高质量的代码,和更大的自信心。

扬中申请400电话费用【扬中企业全国热线电话办理】扬中开通400电话电信价格、扬中微信公众号代运营外包托管、扬中网店编辑装修美工、扬中网站推广优化大概需要多少钱
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)