dongpan1416 2012-08-03 13:46
浏览 25

如何测试对象的多个属性

I'm getting a JSON structure from an API and need to check, whether the successfull response has two specific attributes with specific values.

Key problems:

  1. I cannot compare the whole object, as there are some properties, which may vary with each request
  2. I cannot write two tests (for each attribute), because it can be considered as successful response only when both attributes matches the right values.

Example successful response:

{
    'success': true,
    'user_ip': '212.20.30.40',
    'id': '7629428643'
}

Dirty solution would be

<?php
public function testAddAccount() {
    $response = $this->api->addAccount( '7629428643' );

    $this->assertTrue(
        $response->success === TRUE &&
        $response->id === '7629428643'
    );
}

But I think there must be better and cleaner solution, is there?

  • 写回答

6条回答 默认 最新

  • doudi2520 2012-08-03 14:04
    关注

    If assertTrue() stores the boolean of a succesfull response this is the way how I would handle it. Keep in mind that this is a matter of taste.

    private $lastResponse;
    // $id given elsewhere
    public function testAddAccount($id) {
       $this->lastResponse = $this->addAccount($id);
    }
    
    private function addAccount($id) {
       return $this->api->addAccount($id);
    }
    
    private function isLastResponseValid($response){
       return $this->lastResponse->success === TRUE 
       && $this->lastResponse->id === '7629428643';
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看