问题标签 [mox]
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.
python-unittest - 使用 pymox 模拟多次调用的函数
我在代码中有一个被调用两次的函数。
get_user_settings
一旦它在我正在测试的函数中被调用,并且第二次某些不同的模块具有再次调用它的函数。
我已经像这样使用 pymox 模拟了它:
模拟适用于我的测试代码的第一次调用,但是当它在 utils 模块中再次调用时,我收到以下错误
elixir - 使用 Mox 测试函数链中的多个 API 调用
我正在尝试测试我正在正确转换从第三方 api 返回的数据。我在使用 Mox 时遇到了一些麻烦,因为我需要在数据转换期间访问两个单独的端点。让我通过发布代码更清楚地解释:
测试:
代码:
忽略这样一个事实,即编写的代码实际上不会通过测试。这是我试图弄清楚的测试失败。
问题:
第二个 api 调用team_profile
在测试中被调用了两次,因为我遍历了两次team_ids
,并且每次team_id
调用 API。这是意料之中的,但测试并没有为此做好准备,因为我收到了这个错误。
错误:
这是对的。我确实调用了两次,但是如何设置测试以期望该 API 端点将被调用两次?
testing - 如何用 Mox 模拟 HTTPoison?
背景
我有一个库,它使用 HTTPoison 来实现我需要测试的一些功能。为了实现这一点,我正在使用Mox,我相信它是 Elixir 的通用模拟库(即使还有其他的,这个已经获得了 José Valim 的批准印章)
问题
一切都很好,我在以下位置定义了我的模拟test_helpers.exs
:
我设置了我的虚拟测试:
这里的问题是我无法运行它们:
模块 HTTPoison 不是行为,请将行为传递给 :for
模拟合同,而不是实现
现在,我知道 José Valim 支持这种意识形态,因此我们应该嘲笑的一切都应该有一个合同。但是 HTTPoison 不是我的,也没有。所以这让我想到了以下问题:
- 如何使用 Mox 模拟不提供行为的第三个库?
python - python使用mox模拟打开方法
当我尝试模拟 open 方法时,我遇到了问题。请找到示例代码:
测试方法 :
对于模拟开放方法,我尝试过:
但这并没有解决问题。我收到此错误:
有人可以指导我模拟文件打开的正确过程。我试过这些组合:
任何见解/解决方案将不胜感激。
python - 模拟导入模块时调用的函数
我想测试一个A
使用带参数的装饰器的模块。A
加载模块时对参数进行评估。对于一些装饰器参数,我通过调用foo
module 中的函数来设置值B
。
当我想测试A
时,我想模拟B.foo
以便为我的测试用例设置装饰器参数。我认为这B.foo
必须在A
加载之前被嘲笑B
。
在单元测试中,作为 的调用者A
,我如何模拟B.foo
以确保在评估装饰器参数时使用模拟版本A
?
automated-tests - Elixir Mox 库测试 Phoenix 代码 - 在某些测试文件中没有 Mox 期望
TL;博士
不相关的测试失败,因为在使用 Mox 库时“没有定义期望”,并且stub_with/2
似乎没有任何帮助
细节:
有 Recaptcha 库
https://github.com/samueljseay/recaptcha
这有助于我验证 recaptcha 响应。都不错。测试时间(是的,在让代码以某种方式工作之后——向所有 TDD 粉丝道歉)。显然我不想用我的测试来打谷歌叔叔,所以:
里面test_helper.ex
。需要单独定义该行为:
使用以下方法进行一些测试:
到目前为止一切顺利,除了......所有其他测试现在都失败了:
阅读我发现的优秀文档:“[...] 当没有定义期望时,您可能希望实现回退到存根(或实际)实现。stub_with/2
这正是您所需要的!”
所以另一行test_helper.ex
:
那是行不通的,因为** (ArgumentError) Recaptcha does not implement any behaviour
,好吧..然后让我们添加我自己的“代理”,它可以:
并将test_helper.ex
行更改为
现在ArgumentError
它消失了,但所有没有 Mox 期望的测试都像以前一样失败。有和没有stub_with/2
.
而且我觉得我已经花了太多时间在它上面...... :-( 有什么帮助让我走上正轨吗?
更新:
根据评论中的要求,失败的测试例如控制器测试:
是的,由于生成了请求,他们(不必要地)“触摸”了 Recaptcha,这是另一回事,“解决方案”不是让他们在 Recaptcha 周围走动,而是让他们stub_with/2
完成它的工作。
unit-testing - 使用 Mock 或 Mox 在 Elixir 中模拟连续的函数调用
我正在尝试模拟函数多次调用,因此它每次都会返回特定的不同值。我对 Elixir 和函数概念不太熟悉。
Roller 每次调用都会返回一个随机数。
所以假设list
包含一个以上的元素,则滚轮被调用 2 次。在我的测试中,我需要以某种方式控制它。
我用 Mock 试过了。我想以最简单的方式做这样的事情。不必在任何地方保存一些状态或为每次调用运行单独的进程,这将是很棒的。我知道 Elixir 的思维方式可能与我的客观范式思维方式略有不同。测试模块的最正确的Elixir 方法是什么?VolunteerFinder