我有一个GenServer,负责联系外部资源。调用外部资源的结果并不重要,有时可能会出现故障,因此使用handle_cast
似乎适用于其他代码部分。我的外部资源有一个类似界面的模块,我使用一个GenServer来访问资源。到现在为止还挺好。如何正确测试GenServer中的handle_cast?
但是,当我试图写这个gen_server测试,我无法弄清楚如何测试handle_cast
。我有GenServer的接口功能,我试图测试那些,但除非GenServer未运行,否则它们总是返回:ok
。我无法测试。
我改了一下代码。我将handle_cast
中的代码抽象为另一个函数,并创建了一个类似的handle_call
回调。然后我可以很容易地测试handle_call
,但那是一种破解。
我想知道人们通常如何测试异步代码。我的方法是正确的还是可以接受的?如果不是,那么该怎么办?
你想什么在这里测试的'handle_cast'?它能够初步接触外部资源?或者它也成功了?您是否想在每次测试运行期间实际联系该外部资源? (代码的一些粗略概述也会有帮助。) – Dogbert
不,我将外部资源接口模块注入GenServer,所以我不想实际联系资源(这会花我钱)。由于'handle_cast'使用了接口模块的一些功能,我想测试它在函数返回好的值时成功。添加一些代码是一个好主意,我会在今天几个小时内完成。 – vfsoraki