Тестирование с помощью PEST ⇐ Php
-
Гость
Тестирование с помощью PEST
Я новичок в тестировании, и мне хотелось знать, сможет ли кто-нибудь подсказать мне, что я делаю неправильно. Я хочу протестировать следующую функцию в своем проекте PHP laravel:
публичная статическая функция getFlatSupplierAddress($supplier_address_id): строка { $supplierAddress = Адрес::findOrFail($supplier_address_id); верните $supplierAddress->street. " " . $supplierAddress->номер. " " . $supplierAddress->квартира. ", ". ($supplierAddress->city ? $supplierAddress->city->name : '') . ", ". ($supplierAddress->провинция ? $supplierAddress->провинция->имя: '') . ", ". ($supplierAddress->country ? $supplierAddress->country->name: ''); } Это мой тестовый код:
it('возвращает форматированный адрес поставщика', function () { $addressMock = Mockery::mock(Address::class); $addressMock->shouldReceive('findOrFail') ->с(1) ->andReturnSelf(); // Возвращаем ложное сообщение $addressMock->shouldReceive('getAttribute') ->с('улица') ->andReturn('Вызов'); $addressMock->shouldReceive('getAttribute') ->с('число') ->andReturn('456'); $addressMock->shouldReceive('getAttribute') ->with('квартира') ->andReturn('Квартира 789'); $addressMock->shouldReceive('город') ->andReturn((object)['name' => 'Retiro']); $addressMock->shouldReceive('провинция') ->andReturn((object)['name' => 'Буэнос-Айрес']); $addressMock->shouldReceive('страна') ->andReturn((object)['name' => 'Аргентина']); $expectedAddress = 'Калле 456, Ретиро, Буэнос-Айрес, Аргентина'; $formattedAddress = AddressService::getFlatSupplierAddress(1); // Утверждать ожидать($formattedAddress)->toBe($expectedAddress); Конечно, у меня есть проблема в том, что я плохо использую Mock, поскольку функция возвращает мне строку адреса, найденную в базе данных, и сравнивает ее с созданным мной Mock.
Я новичок в тестировании, и мне хотелось знать, сможет ли кто-нибудь подсказать мне, что я делаю неправильно. Я хочу протестировать следующую функцию в своем проекте PHP laravel:
публичная статическая функция getFlatSupplierAddress($supplier_address_id): строка { $supplierAddress = Адрес::findOrFail($supplier_address_id); верните $supplierAddress->street. " " . $supplierAddress->номер. " " . $supplierAddress->квартира. ", ". ($supplierAddress->city ? $supplierAddress->city->name : '') . ", ". ($supplierAddress->провинция ? $supplierAddress->провинция->имя: '') . ", ". ($supplierAddress->country ? $supplierAddress->country->name: ''); } Это мой тестовый код:
it('возвращает форматированный адрес поставщика', function () { $addressMock = Mockery::mock(Address::class); $addressMock->shouldReceive('findOrFail') ->с(1) ->andReturnSelf(); // Возвращаем ложное сообщение $addressMock->shouldReceive('getAttribute') ->с('улица') ->andReturn('Вызов'); $addressMock->shouldReceive('getAttribute') ->с('число') ->andReturn('456'); $addressMock->shouldReceive('getAttribute') ->with('квартира') ->andReturn('Квартира 789'); $addressMock->shouldReceive('город') ->andReturn((object)['name' => 'Retiro']); $addressMock->shouldReceive('провинция') ->andReturn((object)['name' => 'Буэнос-Айрес']); $addressMock->shouldReceive('страна') ->andReturn((object)['name' => 'Аргентина']); $expectedAddress = 'Калле 456, Ретиро, Буэнос-Айрес, Аргентина'; $formattedAddress = AddressService::getFlatSupplierAddress(1); // Утверждать ожидать($formattedAddress)->toBe($expectedAddress); Конечно, у меня есть проблема в том, что я плохо использую Mock, поскольку функция возвращает мне строку адреса, найденную в базе данных, и сравнивает ее с созданным мной Mock.
Мобильная версия