小编Dav*_*uth的帖子

node.js的BDD和TDD?

什么用于node.js的BDD和TDD?

我习惯使用Cucumber + RSpec.node.js有什么好的组合?

谢谢

tdd bdd rspec cucumber node.js

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

Factory-girl创建绕过我的模型验证

我正在使用Factory Girl在我的模型/单元测试中为一个组创建两个实例.我正在测试模型以检查对.current的调用是否仅根据expiry属性返回'current'组,如下所示......

  describe ".current" do
    let!(:current_group) { FactoryGirl.create(:group, :expiry => Time.now + 1.week) }
    let!(:expired_group) { FactoryGirl.create(:group, :expiry => Time.now - 3.days) }

    specify { Group.current.should == [current_group] }
  end
Run Code Online (Sandbox Code Playgroud)

我的问题是我在模型中验证了新组的到期时间是在今天的日期之后.这会引发下面的验证失败.

  1) Group.current 
     Failure/Error: let!(:expired_group) { FactoryGirl.create(:group, :expiry => Time.now - 3.days) }
     ActiveRecord::RecordInvalid:
       Validation failed: Expiry is before todays date
Run Code Online (Sandbox Code Playgroud)

有没有办法在使用Factory Girl创建时强制创建组或绕过验证?

rspec ruby-on-rails rspec-rails ruby-on-rails-3 factory-bot

68
推荐指数
6
解决办法
3万
查看次数

当命令需要结果数据时,如何应用命令查询分离(CQS)?

在维基百科的命令查询分离定义中,有人说

更正式地说,方法只有在它们是引用透明的情况下才能返回值,因此没有副作用.

如果我发出命令,我该如何确定或报告该命令是否成功,因为通过此定义,该函数无法返回数据?

例如:

string result = _storeService.PurchaseItem(buyer, item);
Run Code Online (Sandbox Code Playgroud)

此调用中包含命令和查询,但查询部分是命令的结果.我想我可以使用命令模式重构这个,如下所示:

PurchaseOrder order = CreateNewOrder(buyer, item);
_storeService.PerformPurchase(order);
string result = order.Result;
Run Code Online (Sandbox Code Playgroud)

但这似乎增加了代码的大小和复杂性,这对于重构来说并不是一个非常积极的方向.

当您需要操作结果时,有人能给我一个更好的方法来实现命令查询分离吗?

我在这里错过了什么吗?

谢谢!

注意:Martin Fowler对此有关cqs CommandQuerySeparation的限制:

Meyer绝对喜欢使用命令查询分离,但也有例外.弹出堆栈是修改状态的修饰符的一个很好的例子.梅耶正确地说你可以避免使用这种方法,但这是一个有用的习惯用法.所以我喜欢在我可以的时候遵循这个原则,但我准备打破它以获得我的流行音乐.

从他的观点来看,重构命令/查询分离几乎总是值得的,除了一些小的简单例外.

c# command-query-separation

62
推荐指数
3
解决办法
2万
查看次数

创建一个接受参数哈希的ruby方法

我知道这可能是一个愚蠢的问题,但我不知道如何创建一个接受参数哈希的ruby方法.我的意思是,在Rails中我想使用这样的方法:

login_success :msg => "Success!", :gotourl => user_url
Run Code Online (Sandbox Code Playgroud)

接受这种参数的方法的原型是什么?我怎么读它们?

ruby

58
推荐指数
4
解决办法
4万
查看次数

如何在TeamCity中排除dotCover所涵盖的类型和方法?

我有一个现有的C#4项目,我通过使用TestDriven.Net和Visual Studio覆盖功能检查了测试覆盖率,即上下文菜单中的Test With - > Coverage.

该项目包含一些我不想覆盖的代码,我通过添加[ExcludeFromCodeCoverage]那些类型和方法来解决这个问题.

我们刚刚将TeamCity升级到6.0.3,并且我已经将dotCover覆盖添加到NUnit构建步骤中.

我已经设法在"过滤器"部分删除外部程序集(如NHibernate)的覆盖范围(通过明确说明我想要覆盖的程序集),但我正在努力解决如何从覆盖的程序集中排除类型和方法.

在此输入图像描述

c# teamcity code-coverage dotcover

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

用C#学习单一责任原则

我正在努力学习单一责任原则(SRP),但这是非常困难的,因为我很难弄清楚我应该从一个班级中删除的时间和内容,以及我应该放置/组织它的地方.

我正在谷歌搜索一些材料和代码示例,但我找到的大多数材料,而不是让它更容易理解,使它很难理解.

例如,如果我有一个用户列表,并且从该列表中我有一个叫做控制的类,可以执行很多事情,例如当用户进/出时发送问候和再见消息,验证用户应该能够进入的天气并踢他,接收用户命令和消息等.

从示例中你不需要太多了解我已经在一个类中做了太多但是我不清楚如何在之后拆分和重新组织它.

如果我理解SRP,我会有一个加入频道的课程,问候和再见,一个用户验证课程,一个阅读命令的课程,对吧?

但是我在哪里以及如何使用踢球?

我有验证课程,所以我相信我会在那里进行各种用户验证,包括天气或者不应该踢用户.

因此,kick函数将位于通道连接类中,并在验证失败时被调用?

例如:

public void UserJoin(User user)
{
    if (verify.CanJoin(user))
    {
        messages.Greeting(user);
    }
    else
    {
        this.kick(user);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你们可以借助易于理解的C#在线和免费资料,或者通过向我展示如何分割引用的示例以及可能的一些示例代码,建议等,我将不胜感激.

c# single-responsibility-principle solid-principles

55
推荐指数
2
解决办法
2万
查看次数

访客模式的替代方案?

我正在寻找访客模式的替代方案.让我只关注模式的几个相关方面,同时跳过不重要的细节.我将使用Shape示例(抱歉!):

  1. 您有一个实现IShape接口的对象层次结构
  2. 您有许多要在层次结构中的所有对象上执行的全局操作,例如Draw,WriteToXml等...
  3. 很容易直接潜入并向IShape接口添加Draw()和WriteToXml()方法.这不一定是件好事 - 每当你想添加一个要对所有形状执行的新操作时,每个IShape派生类都必须改变
  4. 为每个操作实现访问者,即Draw访问者或WirteToXml访问者在一个类中封装该操作的所有代码.然后,添加新操作就是创建一个新的访问者类,该类对所有类型的IShape执行操作
  5. 当你需要添加一个新的IShape派生类时,你基本上遇到了与3中相同的问题 - 必须更改所有访问者类以添加一个方法来处理新的IShape派生类型

你阅读有关访客模式的大多数地方表明第5点几乎是模式工作的主要标准,我完全同意.如果修改了IShape派生类的数量,那么这可能是一种非常优雅的方法.

所以,问题是当添加一个新的IShape派生类时 - 每个访问者实现需要添加一个新方法来处理该类.这充其量是令人不愉快的,在最坏的情况下,这是不可能的,并且表明这种模式并非真正设计用于应对这种变化.

所以,问题是有没有人遇到过处理这种情况的替代方法?

oop design-patterns visitor

51
推荐指数
3
解决办法
2万
查看次数

在RubyMine中运行规范会导致"无法加载此类文件 - teamcity/spec/runner/formatter/teamcity/formatter(LoadError)"

操作系统:Arch Linux,Rails版本:4,RubyMine:6.3

当我从工具运行规范 - 运行Rake任务 - 规范我总是得到这个错误:

/home/chylli/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1024:in`requirement':无法加载此类文件 - - teamcity/spec/runner/formatter/teamcity/formatter(LoadError)

但运行'debug spec:models'是可以的.

我尝试了什么:我在Run - edit配置下添加了'ruby arguments':

-I $ RUBYMINE_HOME/rb/testing/patch/bdd -I $ RUBYMINE_HOME/rb/testing/patch/common

但它不起作用.

ruby rspec ruby-on-rails rubymine ruby-on-rails-4

50
推荐指数
2
解决办法
7940
查看次数

逐包特征方法是否良好?

最近我在按功能打包java代码时遇到了这个javalobby帖子http://java.dzone.com/articles/how-changing-java-package.

我喜欢这个想法,但我对这种方法的问题很少.我问了我的问题,但没有得到满意的答复.我希望StackOverflow上的某个人可以澄清我的问题.

我喜欢逐个功能的想法,它可以大大减少编码时移动包的时间,所有相关的东西都在一个地方(包).但是不同包中的服务之间的交互呢?

假设我们正在构建一个博客应用程序,我们将所有与用户相关的操作(控制器/服务/存储库)放在com.mycompany.myblog.users包中.并且包中的所有博客相关操作(控制器/服务/存储库)com.mycompany.myblog.posts.

现在我想显示用户个人资料以及他发布的所有帖子.我应该叫myblog.posts.PostsService.getPostsByUser(userId)myblog.users.UserController.showUserProfile()

包之间的耦合怎么样?

无论我在哪里阅读有关逐个功能的内容,每个人都说这是一个很好的做法.那么为什么许多书籍作者甚至框架都鼓励按层分组呢?只是好奇知道:-)

java spring java-ee package-design

49
推荐指数
3
解决办法
2万
查看次数

TeamCity,将在一个构建步骤中生成的id传递给稍后的构建步骤

TeamCity新手.我有多个构建步骤.步骤3生成步骤4中所需的ID.在步骤3和步骤4之间传递id(字符串)的最佳方法是什么?构建步骤是用Ruby编写的.我可以设置环境变量吗?

teamcity

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