TranspecRSpec 语法转换器
Transpec 是一种可通过静态和动态代码分析将你的规范转换为最新的 RSpec 语法的工具。使用 Transpec,可以立即将 RSpec 2 规格升级到 RSpec 3。它支持转换几乎所有的 RSpec 的三个变化。
例子
这是一个示例规范:
describe Account do subject(:account) { Account.new(logger) } let(:logger) { mock('logger') } describe '#balance' do context 'initially' do it 'is zero' do account.balance.should == 0 end end end describe '#close' do it 'logs an account closed message' do logger.should_receive(:account_closed).with(account) account.close end end describe '#renew' do context 'when the account is not closed' do before do account.stub(:closed?).and_return(false) end it 'does not raise error' do lambda { account.renew }.should_not raise_error(Account::RenewalError) end end end end
Transpec 会将其转换为以下形式:
describe Account do subject(:account) { Account.new(logger) } let(:logger) { double('logger') } describe '#balance' do context 'initially' do it 'is zero' do expect(account.balance).to eq(0) end end end describe '#close' do it 'logs an account closed message' do expect(logger).to receive(:account_closed).with(account) account.close end end describe '#renew' do context 'when the account is not closed' do before do allow(account).to receive(:closed?).and_return(false) end it 'does not raise error' do expect { account.renew }.not_to raise_error end end end end
安装
只需使用gem
命令安装transpec
:
$ gem install transpec
基本用法
在转换您的规格之前:
- 确保您的项目具有
rspec
gem 依赖项 2.14 或更高版本。如果没有,请更改你的Gemfile
或*.gemspec
- 运行
rspec
并检查所有规格是否通过。 - 确保 Git 存储库是干净的
然后,在项目根目录下运行transpec
:
$ cd some-project $transspec
这将运行规范,转换它们,并覆盖spec
目录中的所有规范文件
转换后,rspec
再次运行,检查是否一切仍然是绿色的:
$ bundle exec rspec
如果它是绿色的,请使用自动生成的消息提交更改,该消息描述转换摘要并帮助您的团队成员理解新语法:
$ git commit -aeF .git/COMMIT_EDITMSG
评论