我可以像这样重定向后测试内容
assert "/url" = redir_path = redirected_to(conn, 302)
conn = get(recycle(conn), redir_path)
assert html_response(conn, 200) == "Content after redirection"
但是我不能像这样在断言网址中添加一个param变量:
id = 10
assert "/url/#{id}" = redir_path = redirected_to(conn, 302)
抱怨:
无法在匹配内调用远程函数id / 0
因此,如果我在使用它之前定义这样的路径:
url_path = "/url/%{id}"
assert url_path = redir_path = redirected_to(conn, 302)
警告:变量“url_path”未使用
?? unusued?是否在断言中使用...
不确定如何沉默警告或如何处理此警告。
代码类似于Chris在这里的回应:
https://elixirforum.com/t/following-redirection-in-controllertests/10084
答案 0 :(得分:3)
警告:变量“url_path”未使用
?? unusued?是否在断言中使用...
不,不是。您的断言将匹配任何值,因为如果您在匹配的LHS上有变量名称,它将匹配任何值,并且该变量将被赋予RHS的值。
在:
foo = 10
assert foo = 20
IO.inspect foo
断言传递,foo
打印为20
。
如果您只想断言该字符串等于redirected_to/2
返回的值,您可以使用==
:
assert "/url/#{id}" == redirected_to(conn, 302)