ftp
4 سال پیش توسط ftp مطرح شد
11 پاسخ

ارور در unittest

@ali.bayat
@mhyeganeh
@sina.it91
من به صورت فساد کد را نوشتم چون برای تستبلیتی راحت باشه اما ارور میده.
الان من یک تست نوشتم اما الان ارور میده

public function testsimple1()  
{  
$id=1;  
userrepositoryfacade::shouldReceive('validedit')->once()->with($id)->andReturn(  
$user=User::where('id',$id)->get()); }

ارور

Tests\\Unit\\ExampleTest::testsimple1  
Mockery\\Exception\\InvalidCountException: Method validedit(1) from Mockery0Apprepositoryuserrepositoryvalidation should be called  
exactly 1 times but called 0 times.

ثبت پرسش جدید
سینا خاقانی
تخصص : توسعه دهنده بک‌اند
@sina.it91 4 سال پیش مطرح شد
0

@mehdisut

کد رو بد نوشتی قابل خوندن نیست


ftp
تخصص : ساده
@ftp 4 سال پیش آپدیت شد
0

@sina.it91
@ali.bayat
@mhyeganeh
میشه راهنمایی کنید


ftp
تخصص : ساده
@ftp 4 سال پیش آپدیت شد
0

@sina.it91
@ali.bayat
@mhyeganeh
@Rp76
@arash.taghavi69
@saman1111
@pwyazyzzadhbna
من به صورت ریپازیتوری پترن پروژه رو نوشتم الان میخوام براش تست بنویسم یک نمونه نوشتم اما این ارور رو میده اگه میشه راهنمایی کنید و یک serviceprovider هم ساختم و فایل رو فراخوانی کردم.

public function testsimple1()  
{  
$id=1;  
userrepositoryfacade::shouldReceive('validedit')->once()->with($id)->andReturn(  
$user=User::where('id',$id)->get()); 
}

و اروری که نمایش میده اینه

Tests\\Unit\\ExampleTest::testsimple1  
Mockery\\Exception\\InvalidCountException: Method validedit(1) from Mockery0Apprepositoryuserrepositoryvalidation should be called  
exactly 1 times but called 0 times.

ftp
تخصص : ساده
@ftp 4 سال پیش مطرح شد
0

@sina.it91
@mhyeganeh
@Rp76
@ali.bayat
@hesammousavi
کسی چیزی در مورد این ارور در تست نویسی لاراول نمیدونه

1) Tests\Unit\ExampleTest::test_simple1
Mockery\Exception\InvalidCountException: Method index(1) from Mockery_1_App_repository_userrepository_validation should be called
 exactly 1 times but called 0 times.

/home/netwons/project/vendor/mockery/mockery/library/Mockery/CountValidator/Exact.php:38
/home/netwons/project/vendor/mockery/mockery/library/Mockery/Expectation.php:308
/home/netwons/project/vendor/mockery/mockery/library/Mockery/ExpectationDirector.php:119
/home/netwons/project/vendor/mockery/mockery/library/Mockery/Container.php:299
/home/netwons/project/vendor/mockery/mockery/library/Mockery/Container.php:284
/home/netwons/project/vendor/mockery/mockery/library/Mockery.php:204
/home/netwons/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:174

ERRORS!
Tests: 18, Assertions: 25, Errors: 1.

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

وقتی از shouldReceive('validedit') استفاده میکنی یعنی داری استفاده از یه متد رو mock میکنی
پس متد validateit باید در طول تست صدا زده بشه، که نمیشه
متن خطا هم داره همن رو میگه


ftp
تخصص : ساده
@ftp 4 سال پیش مطرح شد
0

@ali.bayat
مگه با shouldReceive متدد رو صدا نمیزنن؟
من والا نمیدونم میشه با مثال بگید که چیکار کنم


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

وقتی که تست مینویسیم، بعضی موارد رو نمیتونیم کاملا اجرا کنیم برای همین از Mocking استفاده میکنیم
مثلا بجای ارسال پیام کوتاه واقعی و یا ایمیل ، اون لاجیک رو mock میکنیم

در مورد Unit Testing و Mocking کمی بیشتر مطالعه کن، تا موضوع کاملا جا بیفته


ftp
تخصص : ساده
@ftp 4 سال پیش مطرح شد
0

@ali.bayat
الان کد من اینه که ریپازیتوری و فساد و تست و کنترلر رو براتون قرار دادم من چه چیزی رو باید تغییر بدم
توضیح تصویر رو وارد کنید

توضیح تصویر رو وارد کنید

توضیح تصویر رو وارد کنید

توضیح تصویر رو وارد کنید

توضیح تصویر رو وارد کنید


ftp
تخصص : ساده
@ftp 4 سال پیش آپدیت شد
0

@ali.bayat
@sina.it91
@mhyeganeh
@Rp76
@milad
@hesammousavi
میشه در مورد این قضیه راهنمایی کنید من هنوز به نتیجه نرسیدم
این هم مسیر پروژه در گیت لب
من در پوشه test/unit/exampletest.php تست مورد نظر رو نوشتم میشه چک کنید مشکلش چیه
https://gitlab.com/netwons/project-dic.git


ftp
تخصص : ساده
@ftp 4 سال پیش مطرح شد
0

@ali.bayat
میشه نقشه راه بدی چون من نتونستم به جواب برسم


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

نقشه راه نمیخواد
شما باید مفهوم Mocking رو در تست نویسی درک کنی


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام