- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是确保对象图具有预期的值和类型。我想确保每个值都是预期的类型。
为此,assertEquals()
不幸的是没有用:
$this->assertEquals(
[ 'prop' => '0' ],
[ 'prop' => 0 ]
);
// -> no failures
在这种情况下,assertSame()
效果很好:
$this->assertSame(
[ 'prop' => '0' ],
[ 'prop' => 0 ]
);
// Failed asserting that Array &0 (
// 'prop' => 0
// ) is identical to Array &0 (
// 'prop' => '0'
// ).
assertSame() 的问题是它还会检查对象的引用:
$this->assertSame(
(object) [ 'prop' => 0 ],
(object) [ 'prop' => 0 ]
);
// Failed asserting that two variables reference the same object.
我有什么选择?
<小时/>另外,我不确定为什么这样设计 - 对我来说,感觉 assertSame()
一次做了两件事(我最多有经过验证的对象类,而不是引用)。
最佳答案
到目前为止,我提出了以下选项:
/**
* @param mixed $expected
* @param mixed $actual
* @param string $message
*/
public function assertObjectGraph($expected, $actual, $message = '')
{
$expected = $this->convertObjectsToHashes($expected);
$actual = $this->convertObjectsToHashes($actual);
$this->assertSame($expected, $actual, $message);
}
/**
* @param mixed $value
* @return mixed
*/
private function convertObjectsToHashes($value)
{
if (is_object($value)) {
$value = ['__CLASS__' => get_class($value)] + get_object_vars($value);
}
if (is_array($value)) {
$value = array_map([$this, __FUNCTION__], $value);
}
return $value;
}
示例:
$this->assertObjectGraph(
(object) [ 'prop' => 0 ],
(object) [ 'prop' => 0 ]
);
// -> ok
$this->assertObjectGraph(
(object) [ 'prop' => 0 ],
(object) [ 'prop' => '0' ],
);
// Failed asserting that Array &0 (
// '__CLASS__' => 'stdClass'
// 'prop' => '0'
// ) is identical to Array &0 (
// '__CLASS__' => 'stdClass'
// 'prop' => 0
// ).
class Test{public $prop = 0;}
$this->assertObjectGraph(
(object) [ 'prop' => 0 ],
new Test()
);
// Failed asserting that Array &0 (
// '__CLASS__' => 'Test'
// 'prop' => 0
// ) is identical to Array &0 (
// '__CLASS__' => 'stdClass'
// 'prop' => 0
// ).
关于PHPUnit assertEquals 严格类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38893177/
我创建了一个方法来计算字符串中给定字符的出现次数。 public Integer numberOf(String str, Character a){} 我试着像往常一样测试: @Test publi
我有一个 junit 测试断言两个 Double 对象,具有以下内容: Assert.assertEquals(Double expected, Double result); 这很好,然后我决定将其
我收到以下错误: Both assertEquals(Object, Object) in Assert and assertEquals(double, double) in Assert matc
我是 Mockito 的新手,需要为工作学习它。 我做了一个非常简单的类,它有一个返回字符串的方法。 然后我在eclipse中做了下面的测试类。 import static org.junit.Ass
这个问题在这里已经有了答案: differences between 2 JUnit Assert classes (6 个回答) 7年前关闭。 我用 assertEquals(String, Str
这是一个 PHPUnit 测试: class EqualsTest extends PHPUnit_Framework_TestCase { public function testSucces
所以我正在学习如何在 Django 中练习 TDD,但遇到了一些小问题。我创建了一个自定义用户对象,它以一对一的关系链接到经过身份验证的系统用户。我有以下测试,它练习了我的自定义用户类的一部分: de
任何人都可以帮助我使用 AssertEquals 吗? 我的测试用例类有以下代码,但在 AssertEquals 失败后,测试继续进行下一个方法,即 createClientTodelete。为什么?
我的目标是确保对象图具有预期的值和类型。我想确保每个值都是预期的类型。 为此,assertEquals() 不幸的是没有用: $this->assertEquals( [ 'prop' =>
boolean b = Testfactory.read_element_file(models).equals(ExcelUtils.readdata("Model Export.xlsx"))
我有一个字符串-数字对的类。该类实现了 compareTo 方法。 另一个类的方法返回pair类型的元素集合。 我想对此方法执行单元测试,因此编写了以下内容: @Test public void te
我试图比较两个对象,首先比较它们是否具有相同的键,然后比较它们的键值是否相等,但来自assertEquals的测试仍然失败。我认为这是因为这两个对象位于一个数组内部,所以它实际上是在比较一个对象数组与
即使两个字符串相同,assertEquals() 也会失败...有人能帮我弄清楚为什么吗? public void testSet() { ByteArrayOutputStream ou
我正在通过 JUnit 进行 TDD 实践来开发我的应用程序。我需要确保传递给该方法的参数存在于类字典(Hashmap)中。为此,我使用assertEquals,比较模拟字典对象和方法。然而,IDEA
当使用 assertEquals() 比较两个对象时,是否考虑查看内部结构,即。对象的属性? 假设我有一个类 A,如下所示: public class A { private int ID;
我正在尝试使用 Junit 测试用例为 Course 类中的 GetTeextBook() 创建一个测试方法。请注意 GetTextBook() 是 Textbook 对象的类型,但是当我在 test
我实际上是想了解 PHPUNIT 和使用 PHP 进行单元测试。 我有一个经典的划分方法。 public function divide($firstNumber, $secondNumber){
我正在尝试使用 HUnit 以 TDD 方式在 Real World Haskell 中进行练习.正如您可能猜到的那样,我还没有走得太远,所以就 Haskell 而言,我是一个绝对的初学者。给定以下代
当我尝试在我的代码中使用以下语句时,获取对象没有属性“assertEqual”: self.assertEqual("IRELAND INSTITUTE OF PITTSBURGH", driver.
我有两套: Set set1 = new HashSet(5); Set set2 = new HashSet(5); //add 5 attribute objects to each of
我是一名优秀的程序员,十分优秀!