小编Dav*_*uth的帖子

我应该如何使用RSpec测试Rails应用程序以获得完整的测试覆盖率?

在为简单的Rails应用编写规范时,以下是完整测试覆盖的正确方法吗?

  1. 为所有用户故事编写功能规范
  2. 编写控制器规范以确保各个操作响应正确并且设置了所有必需的变量
  3. 编写模型规范以确保所有方法,验证,e tc.按预期工作
  4. 写邮件规格
  5. 写路由规范

这是否足够,太多(例如,如果我编写了功能规格,我可以跳过一些较低级别的规范),还是不够?为什么?

ruby rspec code-coverage ruby-on-rails rspec-rails

5
推荐指数
2
解决办法
571
查看次数

RSpec redirect_to和return与redirect_to && return

我有一个在某些情况下在某些点重定向的控制器。当我将参数传递给控制器​​规范中的规范帮助器方法(使用最新的RSpec)以触发这些条件时,

ActionView::MissingTemplate
Run Code Online (Sandbox Code Playgroud)

错误。在仔细检查时,我应该重定向,如下所示:

redirect_to root_path && return
Run Code Online (Sandbox Code Playgroud)

然后在我的测试套件中引发了异常。我在应该被调用的控制器的索引函数中设置了一个断点(我重定向到的路由所指向的断点),并且在我的测试套件中从未调用过该断点。当我在开发环境和生产环境中运行该代码时,它似乎可以正常工作,但对于此测试,它不会让步。有任何想法吗?

我的测试看起来像这样:

describe TestController do
  it 'redirects properly with failure' do
    get :create, provider: 'test', error: 'access_denied'
    expect(response.body).to match 'test'
  end
end
Run Code Online (Sandbox Code Playgroud)

编辑:

更新!

似乎将我的重定向更改为

redirect_to root_path and return
Run Code Online (Sandbox Code Playgroud)

在RSpec中工作。

我不知道为什么&&运算符的优先级会违反规范。有人对这里发生的事情有任何解释吗?

ruby rspec ruby-on-rails rspec-rails

5
推荐指数
2
解决办法
1205
查看次数

如何让TeamCity压缩zip文件

我的问题:我在TeamCity上构建了一个zip文件:Files.zip它包含大量文件,zip文件是文件的一个很好的容器.

遗憾的是,由于遗留原因,zip文件的标题中没有版本号.我希望它有一个版本号.像这样:Files.1.2.3.4.zip

我想也许我可以创建一个包含拉链,我可以装饰一个版本号,如下所示:ContainingZip.1.2.3.4.zip!Files.zip这样就将Files.zip压缩成另一个拉链!(疯狂).

但是我无法通过TeamCity和它的工件路径来解决这个问题?

我觉得应该工作的是:/**/.=> Files.Zip => ContainingZip.1.2.3.4.zip!Files.zip但是这只会使Files.Zip

把它分成两步,也不是这样:/**/.=> Files.Zip Files.Zip => ContainingZip.1.2.3.4.zip这不起作用,因为在完成工件存在检查时,Files.zip不存在.

有人知道怎么做吗?(或者我必须在构建步骤中预拉链吗?)

谢谢.

teamcity zip

5
推荐指数
1
解决办法
6043
查看次数

如何在switch语句中匹配正则表达式?

我正在尝试将令牌与函数中的switch语句进行匹配,其中一个令牌需要能够识别下面代码中正则表达式定义的任何字符串或任何数字.

基本上,是否可以针对像这样的情况定义正则表达式 case "[a-z]+":

显然我现在拥有它的方式,除非我通过STRINGNUMBER作为参数,否则我的模式是不可达的.

public Token analyzeToken(String token) {
      Token tokenType = null;     

      switch (token) {

         case "STRING":
            Pattern p = Pattern.compile("[a-z]+");
            Matcher m = p.matcher(token);
            if(m.matches()) {
               tokenType = Token.STRING;
               break;
            }
         case "NUMBER":
            Pattern p = Pattern.compile("[0-9]+");
            Matcher m = p.matcher(token);
            if(m.matches()) {
               tokenType = Token.NUMBER;
               break;

         case "(":
            tokenType = Token.LEFT_PAREN;
            break;
         case ")":
            tokenType = Token.RIGHT_PAREN;
            break;
         case ".":
            tokenType = Token.PERIOD;
            break;
         case ":":
            tokenType = …
Run Code Online (Sandbox Code Playgroud)

java regex switch-statement

5
推荐指数
1
解决办法
5009
查看次数

如何将黄瓜测试结果保存到文件

我有一些可以从控制台运行的Cucumber测试

rake cucumber
Run Code Online (Sandbox Code Playgroud)

是否有命令行选项将测试结果存储到文本文件?

ruby testing ruby-on-rails cucumber

5
推荐指数
1
解决办法
1697
查看次数

黄瓜和小黄瓜是摩卡和柴的替代品吗?Mocha和Chai可以和Java代码一起使用吗?

如果有人可以在StackOverflow等上指出任何其他来源,那么有关于此的更多信息,即使这样也会有所帮助.

bdd mocha.js cucumber gherkin chai

5
推荐指数
1
解决办法
6352
查看次数

为什么透明度在复合模式中超过安全性?

我刚刚了解了Composite模式.据我了解,其背后的主要思想是统一处理树的边缘和节点.这意味着结构的"透明度"比"安全"更重要,导致我们这样的事情:

在此输入图像描述

我理解这个概念,但是在牺牲安全性以保证透明度是一个不错的选择时,却无法想到这种情况.换句话说,我们在哪些情况下需要透明度以至于我们愿意做出如此严肃的牺牲?

design-patterns composite

5
推荐指数
1
解决办法
775
查看次数

匹配大写字母并填写后续字母,直到某些字符串长度

我有一个骆驼字符串,例如:JustAString.

我想按照以下规则形成长度为4的字符串:

  • 抓住所有大写字母;
  • 如果超过4个大写字母,只保留前4个;
  • 如果少于4个大写字母,则大写并添加跟随最后一个大写字母的字母,直到长度变为4.

以下是可能发生的3种情况:

  • ThisIsMyString将产生TIMS(资本);
  • ThisIsOneVeryLongString将屈服TIOV(前4个首都);
  • MyString将产生MSTR(资本+ tr资本化).

我设法用这个片段解决了前两个案例:

str.scan(/[A-Z]/).first(4).join
Run Code Online (Sandbox Code Playgroud)

但是,我不太确定如何最好地修改上面的代码片段来处理最后一个案例(甚至尝试不同的东西).

PS:字符串保证至少有一个大写字母和4个字符.但是,如果理论上缺少资本,则应考虑前4个字符.如果没有4个字符,则可以用第一个字母字符(abcd)填充缺少的字符.但是,如上所述,这两种边缘情况通常不会发生.

ruby regex string

5
推荐指数
1
解决办法
166
查看次数

在RSpec中,如何期望以任何顺序使用不同参数的多条消息?

RSpec似乎按顺序匹配方法接收的消息.我不知道如何使以下代码工作:

allow(a).to receive(:f)
expect(a).to receive(:f).with(2)
a.f(1)
a.f(2)
a.f(3)
Run Code Online (Sandbox Code Playgroud)

我问的原因是有些调用a.f是由我的代码的上层控制的,所以我不能对这些方法调用添加期望.

ruby unit-testing rspec ruby-on-rails

5
推荐指数
2
解决办法
2393
查看次数

修复`缺少冻结的字符串文字注释'问题

我创建了一个新的迁移,它看起来像这样:

class AddCommentsToUsers < ActiveRecord::Migration
  def change
    add_column :users, :comments, :text
  end
end
Run Code Online (Sandbox Code Playgroud)

现在有了Code Climate,我被警告了一个问题: Missing frozen string literal comment.

我试着像这样解决它:

# frozen_string_literal: true
class AddCommentsToUsers < ActiveRecord::Migration
  def change
    add_column :users, :comments, :text
  end
end
Run Code Online (Sandbox Code Playgroud)

但我仍然有同样的问题.我该如何解决?谢谢.

ruby ruby-on-rails rubocop code-climate ruby-2.3

5
推荐指数
1
解决办法
2748
查看次数