ruby-on-rails - 我应该测试正面和负面的陈述吗?

标签 ruby-on-rails testing tdd

我正在为 Rails 中的一个简单用户模型编写单元测试,并且刚刚开始思考如何编写测试。

似乎有积极的测试:

test "password should match the password_confirmation " do
    user = User.new(
    :email => "email@mail.com",
    :password => "password",
    :password_confirmation => "password")
    assert user.valid?, "did not save user even though password matches confimation"
  end

和负面测试:

test "password should not be valid with mismatching password_confirmation " do
    user = User.new(
    :email => "email@mail.com",
    :password => "password",
    :password_confirmation => "doesnotmatch")
    assert user.invalid?, "saved user with mismatching password_confirmation"
  end

将这两个测试都包含在您的测试套件中是多余的还是一种好的做法?

最佳答案

看看TDD. When you can move on? ,这说明您何时准备好测试(和代码)并可以继续前进。在您的示例中,这意味着:

  • 你先写正面测试。测试失败。
  • 然后编写必要的代码以使测试成功。
  • 在那之后,您需要另一个测试来证明您的实现还不够。当你写了例如

    class User
      def initialize(hash)
        @hash = hash
      end
      def valid?
        true
      end
    end
    

    你需要另一个测试用例来证明这是错误的。

  • 编写下一个测试用例,表明检查密码可能会失败。

我看到了以下情况:

  • 没有密码
  • 匹配密码(但太短)
  • 匹配密码(够长够难)
  • 密码不匹配

因此您需要 4 个测试用例。

关于ruby-on-rails - 我应该测试正面和负面的陈述吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107677/

相关文章:

php - 如何让PHPUnit等待条件测试?

c# - 单元测试两位数失败

ruby-on-rails - 使用本地 redis 但不使用远程的 Sidekiq 处理

java - 使用 Maven 运行 JUnit 测试时,Spring MockMvc WebApplicationContext 为空

ruby-on-rails - Rails - 同时创建 child 和 child 的 child

testing - alexa技能会指出要将商品发送到的配置文件名称,城市和密码,这会通过认证吗?

javascript -/dev/null 用于 http 请求

javascript - 什么是良好的独立于浏览器的 JavaScript 编程环境?

javascript - 如何获取显示在谷歌搜索右侧的图像链接

ruby-on-rails - rails : Route to custom controller action