标签: minitest

在单个Ruby文件上使用guard-minitest

我显然做错了什么.我正在尝试在单个文件中编写和测试纯红宝石.我希望看守文件和测试文件,并在文件更改时随时运行minitest.

所以,有两个文件:game.rb和game_test.rb

game.rb

class Game
end
Run Code Online (Sandbox Code Playgroud)

game_test.rb

require 'rubygems'
require 'minitest/autorun'
require './game'

class GameTest < MiniTest::Unit::TestCase
  def test_truth
    assert true
  end
end
Run Code Online (Sandbox Code Playgroud)

我还有一个看起来像这样的Guardfile:

notification :terminal_notifier

guard 'minitest', test_folders: '.' do
  watch('game.rb')
  watch('game_test.rb')
end
Run Code Online (Sandbox Code Playgroud)

现在,我可能忘了什么,但我不能为我的生活弄清楚它是什么.

如果我开始守卫并按Enter键,则"全部运行"并且测试运行..至少大部分时间.但是,我必须按Enter键才能实现.

此外,如果我对文件进行更改没有任何反应.我已经尝试将gem'rb-fsevent'放在Gemfile中并使用"bundle exec guard"运行,但这似乎也没有帮助.

任何帮助将非常感激.我疯了.

谢谢,杰里米

ruby testing guard minitest

5
推荐指数
1
解决办法
922
查看次数

水豚不和工厂女孩一起工作

我正在使用minitest与工厂女孩和水豚进行集成测试.当我不使用工厂女孩创建用户对象时,Capybara工作正常,如下所示:

it "logs in a user successfully" do
    visit signup_path
    fill_in "Email", :with => "joey@ramones.com"
    fill_in "Password", :with => "rockawaybeach"
    fill_in "Password confirmation", :with => "rockawaybeach"
    click_button "Create User"
    current_path == "/"
    page.text.must_include "Signed up!"
    visit login_path
    fill_in "Email", :with => "joey@ramones.com"
    fill_in "Password", :with => "rockawaybeach"
    check "Remember me"
    click_button "Log in"
    current_path == "/dashboard"
    page.text.must_include "Logged in!"
    page.text.must_include "Your Dashboard"
  end
Run Code Online (Sandbox Code Playgroud)

但是一旦我尝试创建一个带有工厂女孩的用户,奇怪的事情就会开始发生,比如访问方法和click_button方法停止工作.例如,这个测试似乎没有任何问题:

require "test_helper"

describe "Password resets" do
  before(:each) do
    @user = FactoryGirl.create(:user)
  end

  it "emails user when …
Run Code Online (Sandbox Code Playgroud)

testing ruby-on-rails minitest capybara factory-bot

5
推荐指数
1
解决办法
3082
查看次数

工厂女孩,依赖工厂

UPDATE

我回去使用Fixtures.IMOP,固定装置比工厂更好; 更容易使用,更容易理解,更容易理解(没有魔力).我的建议:将测试库限制为非常基础(听DHH)...使用minitest和灯具.

原帖

在我的应用程序中,一个区有很多学校,一个学校有很多用途,一个用户有很多帐户,一个帐户有一个角色.为了创建完整的测试工厂,我需要创建一个贯穿工厂的用户和学校.我在最近的尝试中得到了"堆栈级太深"的错误.

我的user_test.rb

 FactoryGirl.define do

   factory :district do
     name "Seattle"
   end

   factory :school do
     association :primarycontact, factory: :user # expecting this to attach the user_id from factory :user as :primary contact_id in the school model
     association :district, factory: :district # expecting this to attach the :district_id from the :district factory as :district_id in the school model
     name "Test School"
   end

   factory :user do, aliases: [:primarycontact]
     email "adam@example.com"
     name "Who What"
     username "wwhat"
     password "123456"
     password_confirmation { |u| …
Run Code Online (Sandbox Code Playgroud)

minitest ruby-on-rails-3 factory-bot

5
推荐指数
1
解决办法
4538
查看次数

当我进入终端进入rake时,为什么我的minitest.rake会运行两次?

我创建了一个minitest.rake,根据ryan bates railcast(http://railscasts.com/episodes/327-minitest-with-rails).

当我在终端中运行rake时,测试运行,然后在重置命令行之前再次运行.

require "rake/testtask"

Rake::TestTask.new(:test => "db:test:prepare") do |t|
  t.libs << "test"
  t.pattern = "test/**/*_test.rb"
end

task default: :test
Run Code Online (Sandbox Code Playgroud)

testing rake ruby-on-rails minitest

5
推荐指数
1
解决办法
1592
查看次数

在测试时,每次调整Rails 3.2中的Javascript文件时,是否必须预编译资产?

我正在尝试学习TDD和BDD并以正确的方式做到这一点.我正在使用的堆栈(或试图使用,Spork不能与Guard一起使用)是Minitest-Guard-Spork-Capybara.我专注于单元测试的模型和规格的集成测试.

我在这个应用程序中有很多Ajax.我只是save_and_open_page在我的一个测试中做了一个,当然页面当然很难看,因为它找不到任何资产.

我的问题是,如果我要测试JS功能,我是否必须每次都预编译资产以测试它们,或者是否有某种方法可以将管道默认设置为开发模式以进行测试.

我确定这是一个n00b问题,但这就是我测试的地方.努力做正确的事.

ruby ruby-on-rails minitest asset-pipeline ruby-on-rails-3.2

5
推荐指数
1
解决办法
2317
查看次数

运行rake test w/minitest 5时可能"快速失败"?

是否可以配置'rake test'以在遇到故障/异常时立即停止运行测试?

我的设置:

  • Rails 4.1
  • 最小5.3.4
  • Tapout(用于格式化)

我想启动测试套件并在测试失败时立即停止 - 默认行为是继续运行所有测试,在某些情况下,数据太多(特别是一个小错误导致大量测试突然失败.)

我有一个很好的小设置与旧版Minitest(4.x)和Turn gem遵循这个要点:( 为minitest/turn/minitest-rails添加一个简单的fail-fast选项),但我正在工作在一个新的Rails 4.1应用程序上,Turn与Minitest 5(尚未)兼容.

有什么想法吗?

ruby-on-rails minitest

5
推荐指数
1
解决办法
1824
查看次数

如何将夹具加载到命名空间模型表中?

我的模型是CWB::Account(它们是命名空间的,因为我继承了这个项目并且他们使用了一些保留字作为模型名称)

我正在使用minitest-spec-rails gem进行测试,我收到此错误 -

ActiveRecord::FxitureClassNotFound: No class attached to find.

测试/测试helper.rb

...

class ActiveSupport::TestCase
  fixtures :all
end
...
Run Code Online (Sandbox Code Playgroud)

测试/控制器/ sessions_controller_test.rb

require 'test_helper'

class SessionsControllerTest < ActionDispatch::IntegrationTest
  before do
    account_one = Accounts(:account_one)
    register(account_one)
  end
...
Run Code Online (Sandbox Code Playgroud)

测试/装置/ accounts.yml

account_one:
  id: 1
  name: testnameone
  email: one@gmail.com
  password_hash: passwordone
...
Run Code Online (Sandbox Code Playgroud)

如果我在test_helper.rb中执行此操作

set_fixture_class :accounts => 'CWB::Account'
fixtures :all
Run Code Online (Sandbox Code Playgroud)

我收到错误 - StandardError no fixture named <CWB::Account:0x0000004bdf32> found for fixture set 'accounts'

编辑

有趣的更新,如果我把account.yml放在fixtures/cwb/accounts.yml我得到一堆关于循环依赖的错误

但如果我把它放在夹具/ CWB/accounts.yml(注意大写)我得到一个错误说

undefined method accounts for ...

ruby-on-rails minitest

5
推荐指数
1
解决办法
2647
查看次数

使用Minitest存根任务实例

如果不使用摩卡的any_instance,我该如何做?我只是想不使用Rspec的情况下测试这里描述的受保护控制器.

class PortfoliosControllerTest < ActionController::TestCase

  setup do
    @portfolio = portfolios(:p2)
    user = @portfolio.user

    token = Doorkeeper::AccessToken.create!(application_id: 'minitest',
                                            resource_owner_id: user.id)
    PortfoliosController.any_instance.stubs(:doorkeeper_token).returns(token)
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mocha.js minitest doorkeeper

5
推荐指数
1
解决办法
7411
查看次数

Minitest - 在Rails 4中测试ApplicationController before_action

如何在Minitest中测试ApplicationController before_action?我有一个before_action从url params设置locale但我不知道如何为它设置测试.

ruby-on-rails minitest

5
推荐指数
1
解决办法
1336
查看次数

使用Minitest为所有测试设置标头的最佳方法

.Hi.我有这个API,以及一个自定义标头,需要将所有请求传递给任何控制器.在Minitest,我应该@request.headers['Custom-Header'] = 'Custom Value'在每一次测试中都做.好吧,碰巧我有很多控制器,这个代码describe在每个文件的顶部块重复.

我试图找到一些方法来制作这款DRYer.我甚至尝试过:

module Minitest::CustomHeaderSetup
  def before_setup
    super
    @request.headers['Custom-Header'] = 'Custom Value' if @request.present?
  end

  Minitest::Test.send(:include, self)
end
Run Code Online (Sandbox Code Playgroud)

@request此刻并不存在.有什么想法吗?谢谢!

tdd bdd minitest rails-api ruby-on-rails-4

5
推荐指数
1
解决办法
1391
查看次数