for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Tests\Wikibase\DataModel\Serializers;
use PHPUnit\Framework\TestCase;
use Serializers\Exceptions\UnsupportedObjectException;
use Wikibase\DataModel\Serializers\TermSerializer;
use Wikibase\DataModel\Term\Term;
use Wikibase\DataModel\Term\TermFallback;
/**
* @covers Wikibase\DataModel\Serializers\TermSerializer
*
* @license GPL-2.0-or-later
* @author Addshore
*/
class TermSerializerTest extends TestCase {
* @dataProvider serializationProvider
public function testSerialization( Term $input, array $expected ) {
$serializer = new TermSerializer();
$output = $serializer->serialize( $input );
$this->assertEquals( $expected, $output );
}
public function serializationProvider() {
return [
[
new Term( 'en', 'SomeValue' ),
'language' => 'en',
'value' => 'SomeValue',
]
],
new TermFallback( 'en', 'SomeValue', 'en-gb', 'en' ),
'language' => 'en-gb',
'source' => 'en',
];
public function testWithUnsupportedObject() {
$this->expectException( UnsupportedObjectException::class );
$serializer->serialize( new \stdClass() );
new \stdClass()
object<stdClass>
object<Wikibase\DataModel\Term\Term>
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example:
function acceptsInteger($int) { } $x = '123'; // string "123" // Instead of acceptsInteger($x); // we recommend to use acceptsInteger((integer) $x);
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example: