问题标签 [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.

0 投票
1 回答
1829 浏览

unit-testing - Mockery\Exception\NoMatchingExpectationException PHPUnit 测试失败

我正在使用 PHPUnit 进行测试,但我的测试在函数上失败了。但我不知道为什么。我要模拟的功能:

和我的单元测试:

但测试说:

如何修复我的单元测试?或者我该如何重构我的测试?

0 投票
1 回答
362 浏览

laravel - Laravel Mockery 集成测试

我对如何使用 mockery 执行集成测试有点迷茫。

我有以下课程: TeacherController TeacherManager - 接口 TeacherManagerImpl - 实现

谈到 mockery / PHPUnit,我如何从我的界面调用方法?它说接口不能被实例化。我知道它不能,但我怎样才能将它注入测试类,或者我应该在实现上做新的。对我来说,对实施做一个新的似乎并不合适。

0 投票
1 回答
1568 浏览

php - 将 PHPSpec 与数组一起使用?

我已经开始使用 PHPSpec 2,并且很喜欢 Mockery,但遇到了一个我无法弄清楚的问题。

我有一个静态函数返回的数组,我想验证这个数组。确保所有需要的钥匙都在那里,等等。

我试过了:

也:

但都没有奏效。第一个原因很明显,错误的说$systems不是对象。第二个错误说我无法序列化闭包。数组中有闭包(它是一个配置数组),但我什至尝试将它们过滤掉,但无济于事。

数组示例:

目前这可能与 PHPSpec 2 一起使用吗?我只是错过了一些愚蠢的东西吗,我对框架很陌生。

0 投票
1 回答
171 浏览

php - 使用模拟测试在抽象类的构造函数中调用的公共函数时未定义的函数

我有一个抽象类,它在其构造函数中调用公共函数。为了测试这些调用是否正确执行,我必须模拟抽象类。每当我这样做时,我都无法在构造函数中进行公共函数调用。我收到以下错误:BadMethodCallException: Method ::setData() does not exist on this mock object。以下代码可能更好地解释了我的问题。

0 投票
1 回答
1747 浏览

php - 尝试模拟模型外观会返回未定义 shouldReceive 的错误

(使用来自 packagegist 的 laravel "4.0.*"、mockery "dev-master" 和 phpunit "3.7.*")

我一直在重构一些代码,以使其更易于使用 IoC 容器进行测试,到目前为止,它工作得非常好。我找到了一个执行以下操作的控制器

现在我需要测试这个外观,我发现很多资源告诉我我可以在模型上调用 shouldReceive 所以我的单元测试中有以下内容

但这只会触发以下错误

BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::shouldReceive()

我不知道在这种情况下该怎么做,我也无法在网上找到任何资源来帮助我解决这个问题。

0 投票
1 回答
1427 浏览

php - PHP Mockery 没有从模拟中调用模拟方法

当抛出异常时,我一直在尝试使用 Mockery 断言从另一个方法中调用一个方法。举个例子:

显然,名称已被简化,但这与我所拥有的所有其他方式相同。在代码中,当FooNotAvailableException被捕获时,我将调用返回给otherMethod().

问题是当运行它时,我得到这个错误:

Mockery\CountValidator\Exception:Controller 中的方法 otherMethod() 应该准确调用 1 次,但调用 0 次。

那是因为在内部otherMethod()调用了原始的、未模拟的。如果我要从测试中调用它,如下所示:

测试通过。

为什么会这样,我将如何为我想要测试的内容编写测试?

0 投票
1 回答
764 浏览

php - zf2 mockery zend db 适配器

使用以下作为指南,我试图掌握嘲弄的窍门:

Zend Db Adapter 适配器模拟与模拟和 数据库和模型测试

(我的 CommissionTable 扩展了 AbstractTableGateway 并且它的构造函数通过了 Db 适配器)

我有以下(适配器模拟链接):

实际测试是:

PHPUnit 返回:

如果我对 ($resultSet) 和 $commissionTable->fetchAll() 进行 Zend Debug 转储,它们是相同的,除了

(结果集)

($commissionTable->fetchAll())

而且我还没有弄清楚如何正确初始化 $commissionTable 的 dataSource 以便 assertSame 通过。

请指教,

谢谢你。

0 投票
2 回答
5301 浏览

php - 使用 Mockery 在 PHP 中模拟接口时出错

在 PHP 中使用 Mockery 模拟接口时遇到了一个问题(我使用的是 laravel 框架,但我不确定这是否相关。

我定义了一个接口

我有一个类可以在其中一种方法上键入该接口...

...我正在尝试测试 MyClass。我创建了一个看起来像这样的测试:

当我运行测试时,我收到消息

'ErrorException:传递给 MyClass::execute 的参数 1 必须是 MyNamespace\SomeSubFolder\MyInterface 的实例,给定的 Mockery_123465456 实例......'

我不知道为什么。

在测试中,我尝试了以下方法:

并且都返回true,所以看起来好像我已经创建了实现接口的实例,但是当我在类上调用方法时它不同意。有任何想法吗???

0 投票
1 回答
858 浏览

php - PHP Mockery 没有从模拟函数返回模拟对象

我正在为使用 Predis 连接到 Redis DB 的类设置一些单元测试。我正在尝试模拟 Client 和 Connection 对象,以便进行单元测试。

这是我的课程中处理 Predis 客户端对象的部分:

这就是我尝试设置单元测试的方式:

在单元测试内部,$redis->getConnection()返回$redisConnection对象,但是一旦在我单元测试的类内部,$redis->getConnection()返回 NULL。

关于我可能遗漏的任何想法?

0 投票
0 回答
597 浏览

php - uasort(): 数组被用户比较函数修改为 Mock Objects

我正在尝试测试一个正常工作的排序函数,但似乎我无法使用模拟对象测试该函数:

这是要测试的功能:

getPointsFor 函数如下所示:

我在我的代码中没有看到任何会导致此错误消息的修改。

这里更新 的是所有其他被调用的函数,我没有看到任何副作用,但也许我错了:

这是我的赌注中的 getPoints:

getQuestion 和 getQuestionbet 也不适用于我的测试用例。