在Chai,您可以执行以下操作:expect({}).to.exist;exist不是函数调用,但这在测试框架中仍然有效。相反的(expect({}).to.not.exist)会导致测试失败,但同样,exist不是函数调用。在不让我调用函数的情况下,这些断言如何工作?事实上,如果我尝试说expect({}).to.exist()测试失败,因为exist不是一个函数。 最佳答案 我想出来了(或者至少,我想出了一个方法)。使用JavaScriptgetters:varthrows={geta(){thrownewError('a');
Chai有一个很好的方法来断言数组是否包含某个元素expect([1,2,3]).to.include(2);我想要的是类似的东西,给定一个对象数组:expect([{a:1},{b:2}]).to.include({b:2});这可能吗? 最佳答案 这是一种替代的、非顺序依赖的集合方法:数组expect([1,2,3]).to.include.members([3,2,1])您还可以将其与deep标志一起使用以比较对象:对象数组expect([{id:1}]).to.deep.include.members([{id:1}]);对
我在控制台中收到这样的错误:$一饮而尽assert.js:90thrownewassert.AssertionError({^AssertionError:TaskfunctionmustbespecifiedatGulp.set[as_setTask](C:\Users\user\Projects\Newproject\node_modules\undertaker\lib\set-task.js:10:3)atGulp.task(C:\Users\user\Projects\Newproject\node_modules\undertaker\lib\task.js:13:8)at
在Laravel中进行集成测试(使用数据库)时。断言同一Eloquent模型的两个实例相同的最佳方法是什么?AssertEquals$模型$model简单地使用->assertEquals($modelOne,$modelTwo);不会工作,因为即使它们是相同的PHPUnit检查类属性,例如wasRecentlyCreated有时模型id可以是字符串或整数。AssertEquals$model->id$model->id这里的问题是模型一个可能是另一个模型的实例,例如:AssertEquals(Person::find(1)->id,Animal::find(1)->id);返回tru
PHP的断言语句的行为与大多数其他语言不同。assert('returnfalse');实际上评估字符串然后断言其结果(false)。它不是将参数与true进行比较,而是通过检查参数的额外步骤,如果它是评估它的字符串,则执行比较。确实很奇怪。我的问题不在于理解这种行为,我的问题在于为这种行为提出一个正当理由,尤其是。因为你现在必须做额外的脑力劳动来思考......“它的计算结果是一个字符串吗?”。 最佳答案 Theadvantagesofastringassertionarelessoverheadwhenassertionchec
我使用异常抛出函数对我的php类中的参数进行了一些检查。我有一些函数可以进行基本检查(===、in_array等)并在false时抛出异常。所以我可以做assertNumeric($argument,"\$argumentisnotnumeric.");而不是if(!is_numeric($argument)){thrownewException("\$argumentisnotnumeric.");}节省一些输入我正在阅读phpmanualpageonassert()的评论那个AsnotedonWikipedia-"assertionsareprimarilyadevelopment
我正在测试一个旨在测试用户是否拥有给定电子邮件的对象。因此,在调用“tryEmail”方法时,它会向给定的电子邮件地址发送一strip有确认链接的消息。我的测试看起来像这样:publicfunctiontestSendingWasSuccessful(){$confirmationObject=$this->getMock('LT\EmailConfirmation\Model\ConfirmationObjectInterface');$testType='test.type';$testEmail='test@example.com';$testData=[];//EmailTes
我正在使用symfony2和phpunit进行测试。有没有类似的东西:$client->getResponse()->getNumberOfQueries()如果不是类似的东西,从响应中检索查询数量的方法是什么?我想快速检查一下我没有优化查询的地方。编辑:我的变量$profile似乎总是null/***@dataProviderurlProvider*@param$url*/publicfunctiontestPageIsSuccessful($url){$client=self::createClient(array(),array('PHP_AUTH_USER'=>'xx','PH
你能解释一下这是如何工作的吗?这是一个例子:首先,我尝试使用下面的正则表达式来匹配条件注释中的内容://s它失败了,因为正则表达式匹配了第一个之前的所有内容最后一个-->.然后我尝试使用另一种带有先行断言的模式://s它的工作原理完全符合我的需要。但是,以下正则表达式也适用://s最后一个正则表达式在先行断言中没有不情愿的量词。现在我很困惑。任何人都可以向我解释它是如何工作的吗?也许这个例子有更好的解决方案?更新:我尝试在另一个文档中使用带有先行断言的正则表达式,但无法处理注释之间的内容。所以,这个//s(以及这个//s)不正确。不要使用它并尝试其他建议。更新:解决方案已被Jonny5
我正在编写单元测试来验证两个库的功能是否相同。本质上,测试接口(interface)。但是,在一些与错误处理相关的测试中。错误级别不同,必须不同,因为例如一个生成E_WARNING,另一个只能生成E_USER_WARNING。那么问题来了。PHP单元中是否有一个断言可以说错误必须是两个可能结果之一?像这样的东西:assertIsIn(array(E_WARNING,E_USER_WARNING),$generatedError);我知道我可以通过在assertContains()中交换预期答案和实际答案或者可能对结果进行一些预断言操作来解决这个问题。然而,有更清洁的方法吗?