问题标签 [test-first]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
629 浏览

unit-testing - 了解“测试优先”和“测试驱动”之间的区别

我过去曾就这个话题进行过对话,我想我可能知道答案,但我无法正确表达。

以下是我认为我知道的:

如果您在编写测试之前已经对事情如何工作有想法,那么我怀疑您是测试优先而不是测试驱动,因此您首先编写测试,在实施您的想法之前测试您的想法。即您对实现的想法是第一位的,并推动了测试的样子。

如果您是测试驱动型的,那么您正试图通过测试来驱动实现的样子。你为一些你想要的行为写一个测试,而不是先入为主的实现想法,所以你必须在“重构”阶段想出一个实现才能很好地通过测试。

我的问题是:

  1. 我是否正确理解了这一点?
  2. 当大多数开发人员很自然地在他们接触键盘之前就立即开始在他们的脑海中探索解决方案是很自然的,一个人如何从测试优先的心态进入测试驱动的心态?
0 投票
2 回答
104 浏览

asp.net-mvc - 测试授权控制器

我在 TDD Book for Test Authorize Controller 中看到了实践,但我不明白这意味着什么是代码

0 投票
1 回答
3357 浏览

ruby - Test First 的温度对象项目 - 它通过了所有测试,但这是我应该学习的吗?

我正在经历 Test First 的 Ruby 项目,并且我已经完成了大部分项目,但是 08_temperature_object 让我很困惑,尤其是因为即使我已经让它工作通过了测试,但我不确定我是否按照他们想要的方式做.

这是我想出的:

根据说明:

请记住将from_celsius工厂方法定义为方法,而不是实例方法。

???我是作为一个类方法来做的吗?有没有比创建新对象更好的方法?

温度对象的构造函数应接受包含条目或条目的选项散列:celcius:fahrenheit

???我知道我使用了散列,但我使用了“选项散列”吗?

工厂方法是一种设计模式......在 Ruby 中实现这种模式的一种方法是通过类方法

???这是写成工厂方法吗?

以下是 Rspec 测试的一些示例供参考:

提前致谢

0 投票
1 回答
459 浏览

ruby - TestFirst 教猪拉丁语“rspec_config 失败”

我正在完成 TestFirst Teaching 中的 Pig Latin 练习,但在制作 Ruby 文件并尝试运行 rake 后,出现以下错误:

我认为这可能与我正在运行的版本有关,但我完全不确定。

Mac OSX 10.8.2
Ruby 1.8.7 Rspec
2.13.1
Rake 10.0.4

笔记!当我在之前的练习(0-3)上运行 rake 时,它​​们工作得很好,但之后就没有任何效果了......

编辑:我更新了我的 rake 版本,现在当我尝试运行 rake 时,我仍然收到“rspec_config failed”错误,但我也得到了这个。帮助!!!

编辑#2:这是我的 Pig Latin 练习的源代码,因为它说这是一个语法问题。

0 投票
3 回答
4308 浏览

sql - SQL Server 中存储过程的单元测试

我想在一个项目中实现测试优先开发,该项目仅使用 SQL Server 中的存储过程和函数来实现。

有没有办法简化存储过程和函数的单元测试的实现?如果不是,那么创建这些单元测试的最佳策略是什么?

0 投票
1 回答
105 浏览

ruby - 为什么我不能将键值对设置为变量,但我可以将其设置为参数?

从Test First Teaching开始学习词典

在我的 dictionary.rb 文件中,我有

我的规范文件使用这样的添加:@d.add('fish' => 'aquatic animal') 哪个有效。

但是,如果我设置:a = 'monkeys' => '3' 我会得到 SyntaxError: unexpected =>, expecting end-of-input a = 'monkeys' => '3'

是什么赋予了?

0 投票
1 回答
123 浏览

ruby - 在查找块的平均运行时间时遇到问题

我目前正在做测试优先编程,并被困在位于http://testfirst.org/live/learn_ruby/performance_monitor的 06_performance 监视器问题上,我在 stackoverflow 上找到了一个类似的线程,但我仍然不理解这个问题。在查找多个块的平均运行时间方面,我没有通过最后两个测试。到目前为止,我的代码是:

我对测试试图做什么感到非常困惑。到目前为止,这是我认为我必须做的:

我相信任务是找出某些块需要多长时间才能运行。但是,我不确定为什么这段代码甚至可以用于前几个测试。而且我在确切知道 yield 语句返回的内容时遇到了问题。如果有人能引导我完成解决这个问题的过程,我将不胜感激,以便我理解解决方案。

0 投票
1 回答
549 浏览

ruby - 编辑类方法 def self.xxx

如果我正在编辑 Array 类,我不应该用 self 定义每个方法(例如self.sum)。我不确定为什么这会通过'Test-First' Ruby 轨道的 rpsec 测试,而没有紧跟 def 之后的 self.method。

0 投票
1 回答
850 浏览

ruby - Testfirst.org - rpn_calculator - 如何在方法之间传递变量?

我正在努力完成这一课,但我显然错过了一些明显的东西!

除了@numbers,一切都对我的新手来说有效。从评估方法设置@numbers 不会影响其他方法中的@numbers,我真的不明白为什么。我已经尝试了所有可以用谷歌搜索的方法,包括将@numbers 更改为@@numbers,但似乎没有任何帮助。我可以在评估方法中评估字符串......但我已经有了一个很好的加法,我可以使用!

结果是加号返回失败,因为@numbers 为空......

感谢弗兰克施密特,我得到了它的工作。显然,不只是将方法存储在哈希中。

正确的评价方法:

0 投票
1 回答
223 浏览

ruby - TestFirst.org Learn_ruby rake 和折旧警告:should 和 :expect 语法

在通过 Google 进行多次搜索后,我已经准备好从社区获得一些意见。我正在尝试申请旧金山的 App Academy,其中一项所需的准备工作是 TestFirst 的 Learn_ruby。我最初在我的 Windows 机器上的 Linux VM 上配置了这个。它工作得很好。当我运行 rake 时,它​​会一次列出一个问题;文字是有用的颜色;并且输出非常简洁,所以我只得到了我需要阅读的内容。我最近将我的系统擦除并配置为双启动 Xubuntu 14.04/Windows,而我曾经拥有的虚拟机早已不复存在。就像我在 VM 中所做的那样,我努力在我的 linux vm 中设置 Ruby。

我现在的问题是,当我rake在我的项目上运行时,我会收到相同的折旧警告:

弃用警告:

不推荐使用shouldfrom rspec-expectations 的旧:should语法而不显式启用该语法。改用新:expect 语法或显式启用:should。从 /home/kaji/Projects/learn_ruby/05_silly_blocks/silly_blocks_spec.rb:25:in `block (3 levels) in '调用。

在谷歌来回搜索之后,我在很大程度上理解了错误告诉我的内容。我什至找到了解决办法让它消失。感谢这篇文章:RSpec's New Expectation Syntax,我能够找到一种语法来消除警告。(基本上必须更改blah.should == #到文件expect(blah()).to eq(#)内部*_spec.rb。这似乎使警告很高兴。但是我仍然看到迹象表明我还有另一个问题。

输出不像我在虚拟机上时那样“友好”。它不是彩色的;它一次转储所有错误。我最喜欢 learn_ruby 的地方在于它一次只给了我一个目标,而输出却很少。现在我必须向上滚动很多方法才能看到我的问题是什么。

我已经厌倦了完全删除 RVM 和所有 gem 并重新安装以查看是否可以解决此问题。没有骰子。我是一个 Ruby Noobie,我对这一切有点不知所措。我想重新开始学习基础知识,但这已经困扰了我一个多星期。有没有人有这个问题/修复除了

我也尝试rpsec ~<=2.0从 Rakefile 中删除。我正在使用ruby -v 2.1.2Rails 4.1.1,并且我有 RSpec 3.0.0、2.99.0、2.0.0。我什至尝试找到一个关于更改语法的教程,但它确实令人困惑,因为它引入了许多我不知道的 Ruby 概念。在那一点上,我觉得我已经不知所措了,我缺少一些简单的东西。

希望我提供了足够的信息来提供帮助。