断言中未使用的警告变量

时间:2018-04-13 10:43:56

标签: testing elixir phoenix-framework assert

我可以像这样重定向后测试内容

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

1 个答案:

答案 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)