我有一个类:classFoo{functiongetCurrentBar(){$model=Query::findByPk($this->getSession()->get('current_bar'));//Pseudocode...return$model;}}所以在我的应用程序中基本上一次有一个柱,它作为一个整数存储在session中。我经常调用一个辅助函数来查找模型实例,它会进行数据库查询。也有缓存,但现在不重要了。我的问题是:如何用对它进行单元测试?我测试的一些类需要这个。我想我可以更改session以包含ID,但这意味着我需要在数据库中有一个相应的模型。最好的方法是添加方法
我正在尝试对我创建的类进行单元测试,但大多数类都处理数据库。我已经获得了非数据库相关的类,可以在本地进行很好的测试,但是当涉及到使用数据库时,尤其是远程时,我感到很困惑。该指南显示使用PDO访问似乎已转储到XML文件的本地数据库,所以它对我没什么用,因为我的数据库在亚马逊云中并使用pg_*函数连接到Postgres数据库。是否有任何类似情况的好例子或者任何人都可以提供任何帮助?我不知道我是否应该在文件中包含我的数据库的本地版本或连接到远程服务器。如果我必须连接,我需要做什么才能使其正常工作?结论项目架构师和我进行了调查,我们确定最好实现ORM,因为没有对数据库的抽象。在此之前,数据库测
这可能是我对模拟的误解。我真的很感激关于为什么模拟一个不存在或存在的类是一件好事的解释?示例场景:假设我们有一个类依赖于第二个类的输出,我们更改了输出格式或其他格式。这不会让我们的测试保持成功,尽管它们在第一类中已经过时了吗? 最佳答案 答案是肯定的!如果您尊重代码中的某些可测试性原则,则可以将一个方法与同一类中的其他方法隔离开来。这就是单元测试的目标。看这个例子:months()/12);}publicfunctionmonths(){//Databasecalloranythingelse,it'sablackbox!}}cla
我正在编写单元测试来验证两个库的功能是否相同。本质上,测试接口(interface)。但是,在一些与错误处理相关的测试中。错误级别不同,必须不同,因为例如一个生成E_WARNING,另一个只能生成E_USER_WARNING。那么问题来了。PHP单元中是否有一个断言可以说错误必须是两个可能结果之一?像这样的东西:assertIsIn(array(E_WARNING,E_USER_WARNING),$generatedError);我知道我可以通过在assertContains()中交换预期答案和实际答案或者可能对结果进行一些预断言操作来解决这个问题。然而,有更清洁的方法吗?
我正在编写另一个PHP框架,现在我已经编写了很多东西,我开始考虑单元测试(是的,我知道,糟糕的形式)。一些Action使框架修改HTTP行为,例如创建cookie,重定向浏览器。另一个主要特征是被访问的URI可以影响框架的行为方式。简而言之,我需要能够测试影响环境或受环境影响的东西,而不仅仅是函数/方法的返回值。我怎样才能最简单地做到这一点? 最佳答案 SimpleTest的WebTester可能对你有帮助。 关于php-单元测试HTTP操作,我们在StackOverflow上找到一个类
在我们的开发团队中,我们决定尝试进行单元测试。我们使用简单测试。然而,这是一条艰难的道路。一周后,我只创建了1个单元测试来测试某个帮助文件。而已。其余的(Controller、模型、View、库)还没有单元测试。我计划不测试其中的大多数。例如,View太琐碎而无法测试,所以我放弃了测试。接下来,Controller。我计划我的Controller不做复杂的事情,所以它只在模型和View之间传递信息。我会把那些更复杂的东西移到图书馆或助手那里。现在回答我的问题:1)我做错了吗?到目前为止,我看不出还有什么可能是错误的,因此需要进行单元测试。大多数东西(现在)只是CRUD。2)我们真的需要
我正在使用TOAST,它在测试模型方面做得很好......但是View呢? 最佳答案 如果你想对View进行测试,你应该考虑单元测试。PHPUnit是一个很棒的工具,并且有一个用于codeigniter的桥梁!http://www.knollet.com/foostack/ 关于php-是否可以在CodeIgniter中对View进行单元测试?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques
我正在为使用Symfony2的session服务获取数据的操作编写功能测试。在我的测试类的setUp方法中,我调用了$this->get('session')->set('foo','bar');。如果我在setUp或实际中输出所有session数据(使用print_r($this->get('session')->all());)测试方法,我返回foo=>bar。但是,如果我尝试从被测试的操作中输出session数据,我会得到一个空数组。有谁知道为什么会这样,我该如何预防?我应该注意,如果我从setUp()中调用$_SESSION['foo']='bar',数据将被保留,我可以从操作
实际上,我正在尝试使用微信为我的Web应用程序设置OAuth登录。所以,我在微信上创建了一个帐户,并使用了一个测试帐户来无限访问。因此,在测试帐户配置中,我已成功验证来自微信的token(参见此处:http://admin.wechat.com/wiki/index.php?title=Getting_Started)。在文档中,OAuth在这里解释:http://admin.wechat.com/wiki/index.php?title=User_Profile_via_Web我们必须将用户重定向到此URL进行登录:https://open.weixin.qq.com/connect
你能告诉我问题出在哪里吗?我有一个包含以下测试的GeneratorTest.php文件:shouldReceive('put')->with('foo.txt','foobar')->once();$generator=newGenerator($fileMock);$generator->fire();}publicfunctiontestGeneratorDoesNotOverwriteFile(){$fileMock=\Mockery::mock('\stats\jway\File');$fileMock->shouldReceive('exists')->once()->and