Erlang:如何断言匹配 IoDevice 值?
Erlang: How to assertMatch IoDevice value?
我正在尝试编写打开文件的测试。文件打开 returns 形式的值:
{ok, IoDevice} | {error, Reason}
IoDevice 示例值为:<0.941.0>
到目前为止我已经尝试了以下方法(其中一些我不相信它们会成功...):
?assertMatch([], theIoDevice).
?assertMatch("[]", theIoDevice).
?assertMatch(<>, theIoDevice). % Won't compile
还有更多的测试,但我失败了。
IoDevice模式的匹配方式是什么?
是否可以匹配到正则表达式?
file:open/2
总是 returns a tuple
有两个元素:
- 原子
ok
和处理文件(genserver)的进程的 pid。
或:
- 原子
error
和一个字符串。但是因为字符串是创建列表的快捷方式,所以元组实际上包含原子 error
和列表。
但是theIoDevice
是一个永远不会匹配空列表[]
或二元列表"[]"
的原子,这是创建列表的快捷方式[91,93]
.
您无法提前知道正在处理文件的进程的 pid,因此您无法尝试匹配特定的 pid,但您可以断言您从 {ok, _}
返回file:open/2
。如果你想更细化,你可以用 is_pid/1
:
检查第二个元素
?assert(is_pid(File)).
您可以像这样手动创建一个 pid:
list_to_pid("<0.4.1>") -> pid()
我正在尝试编写打开文件的测试。文件打开 returns 形式的值:
{ok, IoDevice} | {error, Reason}
IoDevice 示例值为:<0.941.0>
到目前为止我已经尝试了以下方法(其中一些我不相信它们会成功...):
?assertMatch([], theIoDevice).
?assertMatch("[]", theIoDevice).
?assertMatch(<>, theIoDevice). % Won't compile
还有更多的测试,但我失败了。
IoDevice模式的匹配方式是什么?
是否可以匹配到正则表达式?
file:open/2
总是 returns a tuple
有两个元素:
- 原子
ok
和处理文件(genserver)的进程的 pid。
或:
- 原子
error
和一个字符串。但是因为字符串是创建列表的快捷方式,所以元组实际上包含原子error
和列表。
但是theIoDevice
是一个永远不会匹配空列表[]
或二元列表"[]"
的原子,这是创建列表的快捷方式[91,93]
.
您无法提前知道正在处理文件的进程的 pid,因此您无法尝试匹配特定的 pid,但您可以断言您从 {ok, _}
返回file:open/2
。如果你想更细化,你可以用 is_pid/1
:
?assert(is_pid(File)).
您可以像这样手动创建一个 pid:
list_to_pid("<0.4.1>") -> pid()