问题标签 [meck]

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 回答
538 浏览

erlang - Meck 对多个模拟模块的行为异常

我有以下模块

并对上述代码进行以下测试

当我运行测试时,我得到以下错误(为简洁起见,下面仅粘贴了部分错误)。查看下面的错误,我感觉文件模块没有被模拟(或者当我使用 设置另一个模拟时文件模块的模拟被覆盖meck:new(lhttpc)。这里可能出了什么问题?

0 投票
2 回答
806 浏览

erlang - 如何在我的 Erlang 项目中安装 meck?

我创建了我的第一个 Erlang 项目。这是一个简单的密码游戏。我试图不惜一切代价避免 OTP,因为它看起来真的很混乱,而且我的导师认为没有必要使用它。

我有三个文件夹: ebin src test

我使用 makefile 编译所有代码并运行测试。

生活是美好的,直到今晚......

为了模拟我的游戏输入(和输出?),建议我使用 Meck,但我很难将它集成到我的项目中。

我尝试手动安装。我做了一个 Meck 的 git 克隆。我可以“cd”到 Meck 目录中的 eBin 文件夹并编译,运行所有系统测试,并执行基本命令“meck:new(dog)”。惊人的!

现在我需要让 Meck 处理我的项目...我在 Github Meck 自述文件中阅读了这一行:“如果您想安装自己构建的 meck 版本,请将 ebin 目录添加到您的 Erlang 代码路径或将 meck 文件夹移动到您的发布文件夹,并确保该文件夹在您的 ERL_LIBS 环境变量中。”

但我不知道如何将 ebin 目录添加到我的 Erland 代码路径中,我没有发布文件夹(我认为这是一个钢筋?)而且我不知道如何添加 ERL_LIBS 环境变量. 所以我被困住了。

这是我尝试过的:要将 ebin 目录添加到我的代码路径中,我在我的 makefile 中执行了此操作(我的桌面上现在有 meck 目录):

我将 ERL_LIBS 添加到我的 .bash_profile 中,如下所示:

我还尝试安装 Agner 并在安装时出错:

任何人都可以帮忙吗?我觉得有几个选项可供我尝试,但没有一个有效。

更新:

这是阅读@d11wtq 的解决方案后我的make 文件的样子:

最终更新:

根据提示,这是我现在可以使用的最终生成文件。

0 投票
2 回答
5000 浏览

erlang - 如何使用 Meck 在 Erlang 中模拟对象?

好的,我正在使用 Meck,但我迷路了。我的第一语言(我已经写了大约 7 个月了)是 Ruby,所以我似乎还无法将我的大脑包裹在 Meck 嘲笑上。我确实得到了 Ruby 的嘲笑。希望有人可以帮助我。另外,我只写了一周的 Erlang。

更新的代码(但模拟仍然不起作用)......

我有一个 Erlang console_io提示器模块,如下所示:

我的测试现在看起来像这样:

我得到的错误是:

我想在我的测试中模拟(存根?)gets函数,这样gets将返回“aaaa”,然后当我在get_guess()上断言时它应该等于[“a”,“a”,“a”,“a” ]。

我该怎么做呢?

0 投票
1 回答
766 浏览

erlang - 将 meck 与 foreach 一起使用的正确方法

我正在使用 meck 测试我的 gen_server mymodule。特别是我使用 meck按照此处httpc提供的说明进行模拟。

这是我从测试中提取的一些代码:

使用此代码,我可以运行测试,但仍有两件事我无法理解:

1)在结果中我得到类似的东西:

是否有可能每次测试只得到一条而不是两条?

2) 如何为每个测试添加口语描述?

0 投票
1 回答
254 浏览

erlang - 为 gen_tcp 函数编写 Meck 测试用例

这是一个由 Erlang 编写的简单 IRC bot 模块: IRC Bot

有人可以帮我用 MECK 编写函数 connect 和 parse_line 的测试用例吗

非常感谢,我已经知道如何使用 MECK 编写一些关于输入/输出、列表的简单 Erlang 测试用例……但是这个 IRC 机器人似乎超出了我目前的能力。

0 投票
1 回答
88 浏览

erlang - Meck 不允许我的进程进行垃圾收集

我使用 Meck 来模拟我拥有的一些外部服务的行为,纯粹是为了负载测试和分析我的系统,但这给我带来了一些问题。基本上我有很多工作进程正在生成,如果没有任何调用它们,然后在 10 秒后超时,但是当我让我覆盖对我的外部进程的调用时,它们似乎超时并按预期退出,但它们永远不会被垃圾收集,导致随着更多工人的产生,我的应用程序内存使用率不断上升

0 投票
1 回答
837 浏览

erlang - 使用 meck (Erlang) 时出现“未模拟”错误的原因是什么?

我是一个meck(和Erlang)新手,我在meck上有点挣扎。我收到以下错误:

在我的测试开始时,我声明要模拟的模块:

在我的测试结束时,我做的最后一件事是卸载被模拟的模块:

模拟似乎按预期工作,直到测试结束时产生上述错误。

谢谢,丰富

编辑 添加 2 ?debugFmt() 行似乎已经解决了问题;至少我不再得到错误。这是修改后的完整功能:

0 投票
0 回答
136 浏览

erlang - 如何用 meck 正确模拟 riakc_pb_socket?

使用 Erlang R16B02、riakc 2.0.0 和 meck 0.82:

当试图在我的单元测试中模拟 riakc_pb_socket 时,它会爆炸。这是我得到的:

我发现如果我在 riakc_pb_socket.erl 中评论这一行并重新编译 - 问题就会消失。有更好的解决方案吗?

所以后来……

0 投票
1 回答
992 浏览

elixir - 在 Elixir 中,如何模拟在“已使用”模块中定义的函数?

我正在使用meck,它在大多数情况下都很好用。但是,我遇到了以下错误: elixir (ErlangError) erlang error: {:undefined_function, {OAuth2.Strategy.AuthCode, :new, 2}}

我发现这是一个在's宏:new中定义的函数。这意味着没有定义。在这种情况下我该如何模拟?OAuth2.Strategy__using__:newOAuth2.Strategy.AuthCode:new

0 投票
2 回答
1100 浏览

erlang - 使用 meck 对具有相同参数的相同方法进行多次调用

我知道使用 ruby​​/rspec,您可以执行以下操作,以便为对该方法进行的不同调用接收不同的返回值:

我只能使 meck 存根成为一个具有一个返回值的方法,如下所示:

有没有办法让它ok在第一次调用时返回,然后ok2在第二次调用时返回?