- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的应用程序编写测试用例,我的大部分 Controller 都包含 CRUD 的通用代码,因此我编写了通用宏并在我的 Controller 中使用它。所有 Controller 的测试用例都将自动编写。但是我对如何使这个通用代码可重写感到困惑,以便我可以随时重写。
defmodule Qserv.ControllerTest do
defmacro __using__(_options) do
quote location: :keep do
use Qserv.Web.ConnCase, async: true
# this kernel will give me access to current `@model` and `@controller`
use Qserv.KernelTest
describe "#{@controller}.create/2" do
test "All required fields set `required` in model should generate errors that these fields are missing -> One, two, All"
test "Only required fields should create record and match the object"
end
# defoverridable index: 2, I want to override above `describe` completely or/and the included test cases
end
end
end
任何帮助/想法如何实现这一目标?
最佳答案
我通常不喜欢“让我们稍后再做一些事情来撤消它”。它通常会迫使开发人员在他们的头脑中保留一个堆栈,以了解以后如何添加和删除内容。
特别是在这种情况下,您要耦合测试名称。想象一下,有人决定将“一、二、全部”中的“二”变成大写。现在所有 future 的覆盖都将不适用,您将有重复的测试。
明确选择所需内容的更好解决方案。例如,您可以定义在必要时使用的更小的宏:
describe_create!
describe_update!
...
describe_delete!
也许您可以使用 describe_restful!
来调用所有这些。这里的教训是在其上构建小的构建 block ,而不是稍后尝试分解的大块。
PS:请使用比我使用的 describe_x
更好的名称。 :)
关于testing - exunit 测试用例的可覆盖宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48759626/
早上好, 我的Elixir项目中有一些特别昂贵的数据库设置代码,可将所需数据插入数据库。 我目前正在测试,这样可以通过@tag :insert_my_data构造在需要此数据之前将其插入。我的测试助手
我正在该库的 ExUnit 中测试查询(不是查询返回的数据)。 https://github.com/tanweerdev/fat_ecto 这是我的代码: test "returns the qu
我正在为我的应用程序编写测试用例,我的大部分 Controller 都包含 CRUD 的通用代码,因此我编写了通用宏并在我的 Controller 中使用它。所有 Controller 的测试用例都将
我有一个需要使用随机整数的测试用例,所以我有: test "test with random integer" do IO.inspect :random.uniform(10) a
在 Ruby 中,特别是 RSpec,您可以告诉测试运行器在第一个未通过命令行标志 --fail-fast 的测试中中止。 .这有助于避免在连续修复大量测试时浪费时间或失去焦点,例如在进行测试驱动或行
为了在失败的集成测试期间进行调试,我希望仍然能够看到我的应用程序日志。有没有我可以传递给 mix test 的命令完成这个任务? 最佳答案 每个混合项目都有一个 config.exs文件。当 mix
在 RSpec可以使用 shared_examples 创建测试并从多个位置引用它。它极大地简化了开发人员的生活。 有没有办法在 ExUnit 中使用共享示例? 最佳答案 test 宏会做一些簿记工作
我在phoenix应用程序中有以下测试: defmodule TattooBackend.Web.API.V1.PasswordControllerTest do use TattooBacken
我正在学习本教程:http://elixir-lang.org/getting-started/mix-otp/agent.html 所以在我的 Elixir 项目中,我有一个模块 lib/kv/bu
如您所知,rspec支持let在其测试中。通过预定义公共(public)变量并在测试之间共享它们,这非常有用并且可以大大缩短代码。 如何在 ExUnit 中调用此功能? ? 最佳答案 我认为使用 Ex
有没有办法检查是否已从 ExUnit 测试用例调用函数?我有一个调用 IO.puts 的函数,我想测试并验证某些内容正在通过测试用例输出到 STDOUT。 我看到了这个:http://erlang.o
我想在我的 Elixir 项目中有两组单独的单元测试,我可以使用不同的 ExUnit 配置单独运行它们。 我正在研究 ExUnit 格式化程序,我正在尝试为它编写单元测试。为了测试它,我想我会创建另一
我想测试一个函数如何改变数据库中的某些东西。我正在努力处理与以下 ActiveSupport::TestCase 测试用例等效的 ExUnit: test "creates a database re
我正在使用 ExUnit 测试我的 Elixir 应用,这是一款纸牌游戏。 我发现在我编写的每个测试中,我都是从创建一副新牌开始的。 test "Do This Crazy Thing do de
我想对输入数据和预期结果的多个手工组合重复使用测试用例的相同代码,但不复制粘贴每组代码。其他语言的框架以不同的方式支持它,例如在 Groovy/Spock 中: def "maximum of two
我正在测试函数的返回值。两者中哪一个是首选方式? test "extra verbose, using assert" do {:error, reason} = MyModule.my_fun
我的 elixir 应用程序中有一个方法,比如说 Some.Module.func/1 ,返回两个数字的元组。我正在 ExUnit 中编写测试,只需要测试元组中的第一个元素,并不真正关心第二个元素。
我正在尝试启动 IEx.pry在一次测试中。但是我无法在 iex session 中运行测试。请注意,我没有使用混合。 ExUnit.start defmodule Calc do def add
我有一个 Elixir 程序,我想测试它通过 IO.gets 多次从用户那里获取输入。我将如何在测试中伪造这个输入? 注意:我想为每个 IO.gets 返回不同的值 最佳答案 首选的方法是将您的代码分
我有一个 Phoenix 应用程序(它只是一个没有前端的 restful api),其中一个 Controller 做了一些我想测试的东西,但是在 Controller 的末尾它调用了一个调度程序,它
我是一名优秀的程序员,十分优秀!