【问题标题】:Override "rspec" command to run tests覆盖“rspec”命令以运行测试
【发布时间】:2014-03-29 15:46:41
【问题描述】:

这看起来很简单,但我无法通过 Google 或搜索 SO 找到信誉良好的解决方案。

我正在使用带有 Rails 4 应用程序的工头通过 .env 文件加载 ENV。要正确运行我的测试,我必须执行foreman run rspec [optional files]

这很乏味,有时我会忘记foreman run 部分。我想为单个应用覆盖 rspec 命令,以便:

rspec [files] => foreman start [files]

查看了 binstubs,但我并不完全理解它们,而且它们看起来与我想要的不完全一样。

我可以创建一个执行此操作的 bash 脚本,但现在它是特定于我的本地计算机的,而不是内置到应用程序代码库中的。

【问题讨论】:

  • 如果你不想要一个简单的 bash 解决方案,为什么要应用 bash 标签?对于那些准备回答对 ruby​​ 不太了解的 bash 问题的人(比如我)来说,这只是浪费时间。
  • 编写一个 bash 脚本并将其放在 script/spec 或任何您认为合适的名称下。这是一个很好的惯例。否则,只需在您的 bashrc 文件中创建一个别名,以便您可以将 rspec 别名为 foreman run rspec
  • @rici,实际上我最终选择了一个 bash 脚本,因为它是最干净的解决方案。我会更喜欢非 bash 解决方案,但这会比它的价值要麻烦得多。我已经添加了我在下面使用的脚本。如果您对脚本有任何好的建议,我会欢迎他们作为答案。

标签: ruby ruby-on-rails-4 rspec


【解决方案1】:

我最终在我的 ~/scripts 文件夹中创建了一个脚本(我存储自己添加到我的 PATH 的脚本)。

这是我在 ~/scripts/tester 中的内容(具有可执行权限):

#!/bin/bash

#==================================================
# Created: 2014-04-01 / Updated: 2014-04-01
# Desc: Shorten syntax to run tests properly.
#==================================================

# For developers who may not use bash at all...
# $0 = filename and path
# $1 = first arg...

cmd="foreman run rspec $1"

echo "#--------------------------------------------------"
echo "# EXECUTING: $0"
echo "# '$cmd'"
echo "#--------------------------------------------------"

$cmd

我可以在我的 Rails 应用程序目录中使用 tester 执行,它会运行 foreman run rspec 来执行所有测试,或者我可以传入特定文件或通配符名称,它会运行匹配的测试。

它会输出文件位置,因此如果我将此脚本传递给其他人,他们就会知道正在运行哪些文件,以便他们可以修改它...我这样做是因为我实际上遇到了一个新开发人员正在谷歌搜索的情况rails 的“tester”脚本想知道为什么他找不到它作为核心 rails 的一部分……这样新手就可以确切地知道正在运行什么以及文件的位置。

选择 tester 作为脚本名称,因为它不会与任何其他已知命令 AFAIK 冲突。

示例输入:

tester => foreman run rspec # all specs

tester spec/models => foreman run rspec spec/models # run all model specs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2016-11-09
    • 1970-01-01
    相关资源
    最近更新 更多