我在rails应用程序中构建了一个自定义验证器,确保地址格式如下:
收件人姓名:
地址第一行:
地址第2行:
市:
州:
邮政编码:
- 要么 -
银行帐号:
银行路由号码:
银行账户类型:
我已经实现了以下帮助器方法来检查地址是否与这些模式之一不匹配:
def malformed_check(address)
address !~ /^Recipient Name:(.*)$\n^Address Line 1:(.*)$\n(^Address Line 2:(.*)$\n)?^City:(.*)$\n^State:(.*)$\n^ZIP Code:(.*)$/
end
def malformed_ach(address)
address !~ /^Bank Account Number:(.*)$\n^Bank Routing Number:(.*)$\n^Bank Account Type:(.*)$/
end
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何跨多行打破我的正则表达式?
我们的编码标准中每行最多120个字符.
我正在使用的编码标准指定一组测试函数的规范应该有一个主题,即被调用的函数。它看起来像这样:
define User do
context :foo do
let(:user) { FactoryGirl.create(:user) }
subject { user.foo }
it { ... }
end
end
Run Code Online (Sandbox Code Playgroud)
该subject块的典型用途是实例化您正在测试的类:
define User do
subject { FactoryGirl.create(:user) }
it { ... }
end
Run Code Online (Sandbox Code Playgroud)
我们的风格指南的预期效果是我们为每个正在测试的方法有一个不同的主题块。这会减慢我们的测试速度吗?如果我们subject以典型的方式使用,我们是否会从每个类只有一个主题块的内置记忆或其他加速中受益?
旁白:
我遇到过一种我们的风格不起作用的情况。使用时any_instance.should_receive您不能遵循我们的风格指南,否则规范将始终失败。相反,您需要使用更传统的方法subject,您正在测试的对象在哪里,并在您的规范中调用它的方法。
# passing spec
define Foo do
before { Bar.any_instance.stub(:baz) }
subject { FactoryGirl.create(:foo) }
it "bazzes Bars" do
Bar.any_instance.should_receive(:baz)
subject.baz_the_bars
end
end
# spec follows style guide but fails
define Foo do
before { Bar.any_instance.stub(:baz) …Run Code Online (Sandbox Code Playgroud)