问题标签 [mockery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 如何使 instanceOf 检查可测试
不幸的是,PHP 不允许字符串类型提示。如果它不是某个类的实例,我想检查以下项目并抛出错误。是否可以对此进行单元测试,无论是通过模拟还是以其他方式执行此检查?
我遇到的麻烦是那$schedule
是一个模拟。我需要测试该//more stuff here
部分中发生的情况。
目前,$schedule
是 的一个实例Mockery::mock('Schedule');
。
phpunit - Omnipay 常见的抽象类测试失败
我只是在关注 Omnipay,目的是增加对另一个网关的支持。使用 Composer 安装后,我尝试运行 Paypal(作为示例网关)和 Omnipay Common 测试。使用这两个包,我调整了 bootstrap.php 以便它可以找到作曲家自动加载文件。Paypal 测试运行良好(绿色)。
但是,常见的测试以 1 次失败和 38 次错误失败。所有失败/错误都在 AbstractGatewayTest、AbstractRequestTest、AbstractResponseTest 中。
这让我想知道 PHPUnit 或 Mockery 处理模拟抽象类的方式是否发生了变化。我正在使用 PHPUnit 3.7.34。我最近一直在为 Laravel 项目使用 PHPUnit 4.0.*,但 Omnipay 需要 3.7。
composer.lock 表示我使用的是 Mockery 0.9.0。我正在运行通过 Macports 在 OS X Mavericks 上安装的 php 5.4.*。
任何人都知道什么可能会绊倒我?谢谢!
编辑:示例失败消息:
有 38 个错误:
其中“...”是我的源代码区域。
php - Mocking Laravel Eloquent 模型 - 如何使用 Mockery 设置公共属性
我想在我的 PHPUnit 测试中使用一个模拟对象(Mockery)。模拟对象需要同时设置一些公共方法和一些公共属性。该类是 Laravel Eloquent 模型。我试过这个:
...但设置公共属性会返回此错误:
BadMethodCallException:此模拟对象上不存在方法 Mockery_0_User::setAttribute()
模拟简单类时不会返回此错误,但当我尝试模拟 Eloquent 模型时会返回此错误。我究竟做错了什么?
php - 嘲笑没有匹配的关闭处理程序
我无法弄清楚为什么在此测试期间会出现此错误。我的测试似乎与其余代码完全匹配。我在看什么?
在我的测试中,我有:
错误:
我缺乏理解的部分原因可能与我不确定Objects: array(....)
错误底部出现的内容有关。
php - 如何在 PHP 单元测试中模拟构造函数中调用的方法?
我在对具有在构造函数中调用的方法的类进行单元测试时遇到问题。我不明白如何嘲笑这个。也许我应该使用 phpUnit 的 'setUp' 方法?
我正在使用 Mockery 库。还有比这更好的工具吗?
任何建议,将不胜感激。
php - Laravel 控制器单元测试模拟模型未调用
我正在尝试测试控制器操作。该操作应调用模型上的函数,返回模型。在测试中,我模拟了模型,将其绑定到 IoC 容器。我通过其构造函数将依赖项注入到控制器中。然而不知何故,没有找到并调用模拟,而是调用了模型的实时版本。(我可以说,因为正在生成日志。)
首先,我的单元测试。创建模拟,告诉它期待一个函数,将它添加到 IoC 容器,调用路由。
其次,注入依赖项的我的控制器构造函数。
然后是我的控制器方法。
控制器方法被正确调用,但它似乎没有看到我的 Mock,所以它正在调用实际模型的函数。这导致模拟的期望失败,并导致对数据库的检查是不可取的。
我在另一个测试中也遇到了同样的问题,尽管这个测试使用了 Laravel 内置的 Facades。
考试:
控制器方法:
我收到错误:
同样,我知道该方法被正确调用,只是似乎没有使用模拟。
laravel-4 - 如何模拟 Carbon 方法链
我试图嘲笑Carbon::parse($date)->format("Y")
,但我不知道该怎么做。
这是我到目前为止所拥有的:
php - 无法在 Laravel 中运行多个控制器测试
我正在尝试通过为一些遗留代码编写单元测试(并在此过程中对其进行更新)来清理现有应用程序。我重写了许多库,我真的很喜欢 TDD 方法。然而,现在是时候继续测试一些控制器了,我在第一组测试中遇到了问题。我正在遵循 Jeffery Way 的Laravel Testing Decoded中的解释。
这里的目标是测试我的登录路线:http://my-development-server/login
. 代码应该是这样工作的:首先,检查是否有人已经登录 - 如果是,将他们重定向到仪表板(应用程序的主页)。否则,呈现登录页面。很直接。
以下是涉及的路线:
这是AccountController::getLogin
方法:
我正在使用该Sentry
库进行用户身份验证。
这是我的第一个测试:
此测试模拟“用户在已经登录时尝试登录”的情况。check
返回 true(已经登录)并且用户被重定向到名为dashboard
. 它运行良好,测试通过。
接下来,我添加一个新的测试,以测试“没有人登录时用户尝试登录”的情况。这是该测试的代码:
当我运行这个测试时,第一个测试通过了,但我NotFoundHttpException
在第二个测试方法中得到了一个。
这个问题有几个奇怪的地方:
如果我注释掉第一个测试方法 (
test_login_alreadyLoggedIn
),则第二个测试通过。如果我颠倒两个测试方法的顺序,则
test_login_notLoggedIn
通过和test_login_alreadyLoggedIn
失败(即类中的第一个方法通过,第二个失败)。
在我看来,这像是某种配置问题——在第一次测试(通过)之后,有些东西搞砸了,它无法在第二次测试中发出请求——但我不知所措。我已经多次翻阅这本书和谷歌,但找不到任何我缺少的配置的参考。
有什么建议么?
php - 使用 Laravel 模型绑定模拟控制器测试
我在我的路由中使用模型绑定将模型传递给我的控制器操作,并希望能够编写测试。如果测试不需要访问数据库,那将是可取的。
在本例中使用用户名绑定模型,然后在路由定义中使用。
在我的控制器中,绑定用户被传递给操作。
现在,在我的测试中,我试图模拟用户。
运行此测试时,我收到以下错误:
我也希望能够使用return User::firstByAttribtues($value);
,但 Mockery 不会让我模拟受保护的方法 - 有什么办法可以解决这个问题吗?