我在使用Laravel5和PHPUnit时遇到了奇怪的问题。当我尝试模拟Laravel的外观(例如Auth、View、Mail)时,我总是得到这个异常:Mockery\Exception\InvalidCountException:Methodsend("emails.register",array('user'=>'object(MCC\Models\Users\User)',),object(Closure))fromMockery_0_Illuminate_Mail_Mailershouldbecalledexactly1timesbutcalled0times.我对"shoul
我正在使用带有php单元的laravel5来创建一个laravel包。我有一个Repository..namespaceMyname\Myapp\Repositories;useMyname\Myapp\Models\PersonModel;classPersonRepository{protected$personModel;publicfunction__construct(PersonModel$personModel){$this->personModel=$personModel;}publicfunctiontestFunction($var){return$this->p
我正在我的Laravel4应用程序中实现单元测试,但我被困在模拟访问器属性上。我有一个Eloquent模型,其中有一个Accessor属性。我正在尝试模拟此模型并在调用此访问器属性时返回一个值。但我找不到任何让它工作的解决方案。我super简单的用户类。classUserextendsEloquent{publicfunctiongetFullNameAttribute(){return$this->first_name.''.$this->last_name;}}我尝试了以下方法:$user_mock=m::mock('MyApp\Models\User');$user_mock->
我正在为一个模型编写测试,该模型会在其属性之一发生更改时触发一个事件。不幸的是,我想不出测试这个的最佳方法。型号代码为:classFooextendsEloquent{publicfunctionsetNameAttribute($value){$this->attributes['name']=$value;if($this->exists&&($this->original['name']!=$value)){Event::fire('foo.NameChange',array($this));}}}我对事件触发的初步测试:$bar=Foo::first();Event::shou
我能以某种方式更新特定shouldReceive的shouldReturn值吗?例如,我有几个使用一个返回值的测试,只有一个使用其他返回值。所以我把它放在了setUp中:$this->someDependency->shouldReceive('someMethod')->andReturn(0);如果我把它放在那个特定的测试用例中:$this->someDependency->shouldReceive('someMethod')->andReturn(1);它将被忽略并返回0。我“修复”了所有测试的移动模拟并从setUp中移除。但我不喜欢那种代码重复。
我已经成功使用Mockery最近进行了PHPUnit测试。然而,我目前正在工作的项目中存在依赖项,该项目使用静态方法调用与API进行交互。我正在努力测试一个特定的用例,感觉我会在开发路线图中找到其他类似的用例。以此类为例:namespaceName\Space;classUser{/***@return\Name\Space\User[]*/publicstaticfunctionlist():array{//...}publicstaticfunctioncreate(array$attrs):User{//...}}如果我只想断言一个方法返回一个基本类型,例如数组:Mockery:
log4j是否有一个仅存储日志记录事件列表的附加程序(用于单元测试,以验证没有写入错误日志)? 最佳答案 有一个MemoryAppender,但它不是标准log4j库的一部分。您可以轻松编写自己的代码,但如果您仅将它们用于单元测试,我可能会模拟Logger并断言没有调用它。覆盖目标类中的getLogger()方法或直接在类型上设置模拟Logger。使用Jmock(内存中的例子,如有错误请见谅):publicvoidtestDoFoo(){Mockerymockery=newMockery();LoggermockLogger=moc
我正在尝试使用PhpUnit/Mockery/Laravel进行单元测试。这并不容易。我已经阅读了数十篇教程,但仍然无法将其应用到现实生活中。我将展示一段我想测试的代码。谁能告诉我如何测试SoldProductModifier类的方法modifyBasedOnItemCode()?先简单解释一下:我希望用户能够输入产品代码(项目代码)和数量,我希望系统自动更新SoldProduct模型的product_id和category_id属性。为此,我创建了我现在要测试的类。另请参阅:simplifieddiagramformydatabase(onlytablesrelatedtomyque
有没有办法在Laravel5中测试邮件?尝试了我在互联网上看到的唯一合法模拟示例,但它似乎只适用于Laravel4。下面的当前代码。$mock=Mockery::mock('Swift_Mailer');$this->app['mailer']->setSwiftMailer($mock);...somemorecodeshere...$mock->shouldReceive('send')->once()->andReturnUsing(function($msg){$this->assertEquals('Mysubject',$msg->getSubject());$this->
我在PHP中使用Mockery模拟接口(interface)时遇到了问题(我使用的是laravel框架,但我不确定这是否相关。我已经定义了一个接口(interface)我有一个类在其中一种方法上提示该接口(interface)......我正在尝试测试MyClass。我创建了一个看起来像这样的测试:publicfunctiontestExecute(){$mock=Mockery::mock('MyNamespace\SomeSubFolder\MyInterface');$mock->shouldReceive('method1')->andReturn('foo');$myClas