小编Dav*_*uth的帖子

在WebStorm中,无法从.feature文件导航到非标准目录中的步骤定义

如果文件夹的名称是.feature,stepDefinition.js则WebStorm不会从文件导航到函数声明stepDefinitions.如果文件夹名称是,它工作正常step_definitions.

是否有WebStorm的设置,我可以改变,这样它会寻找的步骤定义JS文件下stepDefinitionsstep_definitions

我在谈论这个功能:https: //www.jetbrains.com/help/idea/15.0/navigating-from-feature-file-to-step-definition.html?origin = old_help

我想坚持我们已经建立的编程标准.谢谢.

cucumber gherkin webstorm cucumberjs

4
推荐指数
1
解决办法
1286
查看次数

观察者模式如何减少耦合?

我理解观察者模式的工作原理,但为什么观察者模式减少了软件设计中 UI 和业务逻辑组件之间的耦合?

design-patterns observer-pattern

4
推荐指数
1
解决办法
988
查看次数

自我可能是假的还是零的?

可以self评价为假或零吗?

例如...

class FooBar

  ...

  def check_this
    self && check_something_else
  end
end
Run Code Online (Sandbox Code Playgroud)

就是self &&在这种条件有必要吗?

ruby ruby-on-rails

4
推荐指数
2
解决办法
574
查看次数

我可以重复步骤而不重复使用 Cucumber 的步骤吗?

我需要测试当用户多次重复一组操作时触发的行为。我想最终得到一个看起来像这样的场景:

Scenario: Nice way
  Given that I am on some screen
  When I enter something into some text field
  And I press the Continue button
  And I go back
  And I repeat the previous 2 steps 5 times
  Then the application should crash
Run Code Online (Sandbox Code Playgroud)

而不是看起来像这样的场景:

Scenario: Annoying way
  Given that I am on some screen
  When I enter something into some text field
  And I press the Continue button
  And I go back
  And I press the Continue button
  And I …
Run Code Online (Sandbox Code Playgroud)

ruby cucumber

4
推荐指数
1
解决办法
1841
查看次数

如何在 RSpec 中存根两个链接的 ActiveRecord 方法?

我有一段这样的代码:

Green::Trees.where(id: ids).find_each do |tree|
  tree.grow!
end
Run Code Online (Sandbox Code Playgroud)

什么是存根的好方法,find_each以便在每次迭代中,它返回我在测试中的 let 块中定义的树,如下所示:

let(:tree) { create(:tree) }
let(:tree_ids) { [tree.id] }
Run Code Online (Sandbox Code Playgroud)

我能做些什么?

我应该做这样的事情吗?

allow(Green::Tree).to receive(:where).and_return(Green::Tree)
allow(Green::Tree).to receive(:find_each).and_yield(tree)
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails

4
推荐指数
1
解决办法
1004
查看次数

如何在 RSpec 中模拟新 ActiveRecord 对象的创建调用?

我有一个 ActiveRecord 对象 User。在我制作的应用程序中,我在 gem 上使用单点登录,但我需要在数据库中保存一些用户数据。我的 ApplicationController 有以下代码:

def create_user
  User.create(name: current_user['name'], email: current_user['email'], company_id: current_user['id'])
end
Run Code Online (Sandbox Code Playgroud)

我需要一个模拟实际调用的 RSpec 测试create。我努力了

allow_any_instance_of(User).to receive(:create).with(any_args).and_return(user)
Run Code Online (Sandbox Code Playgroud)

它返回一个错误,指出“用户没有实现创建”。

ruby activerecord unit-testing rspec ruby-on-rails

4
推荐指数
1
解决办法
3792
查看次数

我可以在单独的行上的对象和方法调用之间进行注释吗?

我有一个函数,我在新行上调用一个对象方法:

def fn(str)
  str.gsub('a', 'a1')
     .gsub('b', 'b2')
end
Run Code Online (Sandbox Code Playgroud)

所有这一切都很好,花花公子...直到我想在换行方法调用之前发表评论.

def fn(str)
  # Replace 'a' with 'a1'
  str.gsub('a', 'a1')
     # Replace 'b' with 'b2'
     .gsub('b', 'b2')
end
Run Code Online (Sandbox Code Playgroud)

繁荣!错误.

SyntaxError: syntax error, unexpected '.', expecting keyword_end (SyntaxError)
    .gsub('b', 'b2')
         ^
Run Code Online (Sandbox Code Playgroud)

然而,如果我把评论放在同一行,那么错误就会消失......

def fn(str)
  str.gsub('a', 'a1')  # Replace 'a' with 'a1'
     .gsub('b', 'b2')  # Replace 'b' with 'b2'
end
Run Code Online (Sandbox Code Playgroud)

这到底是怎么回事?我正在使用Ruby版本 ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]).

编辑

Ruby解析器可能会对在何处考虑语句结束感到困惑.str.gsub('a', 'a1')可以是一个声明,也可以在下一行继续.

来自Python世界,解决这个问题的方法是打开带括号的范围,让解析器知道:

def fn(str):
  return (
    # Replace 'a' with 'a1'
    str.replace('a', …
Run Code Online (Sandbox Code Playgroud)

ruby

4
推荐指数
1
解决办法
55
查看次数

复合模式简化

如果不实现Component并将所有内容视为Composite,我会失去什么?

我放弃了Leaf节点的实现:

class Component : IComponent
{ 
    /*...*/ 
}
Run Code Online (Sandbox Code Playgroud)

现在请看看我的代码.

public interface IComponent
{
    int ID { get;set; }
    string Name { get;set;}
    void Add(IComponent item);
    void Remove(IComponent item);
    List<IComponent> Items { get; }
    void Show();        
}


public class Composite : IComponent
{
    private int _id;
    public int ID
    {
        get { return _id; }
        set { _id = value; }
    }

    private string _name;
    public string Name
    {
        get { return _name; }
        set { _name = value; …
Run Code Online (Sandbox Code Playgroud)

c# composite

3
推荐指数
1
解决办法
5290
查看次数

状态模式:为什么上下文类不实现或继承State抽象接口/类?

我正在读关于状态模式.我刚刚开始,所以当然我首先阅读整篇维基百科的文章.

我注意到本文中的两个示例都有一些基本抽象类或Java接口,用于通用State的方法/函数.然后有一些状态从基础继承并以不同的方式实现这些方法/功能.然后是一个Context类,它有一个State类型的私有成员,并且在任何时候都可以等于其中一个实现的实例.该上下文类也实现了相同的方法,并将它们传递给当前的状态实例,然后有一个额外的方法来改变状态(或者根据设计,我理解状态的改变可能是对其中一个实现的方法的反应) .

为什么这个上下文类没有专门"扩展"或"实现"通用的State基类/接口?

state design-patterns

3
推荐指数
1
解决办法
1573
查看次数

桥模式 - 组合还是聚合?

我正在阅读一些关于设计模式的书籍,虽然有些人将抽象和实现之间的关系描述为一个组合,但有些人将其描述为聚合.现在我想知道:这取决于实施吗?关于语言?还是上下文?

oop design-patterns bridge

3
推荐指数
1
解决办法
1879
查看次数