我显然做错了什么.我正在尝试在单个文件中编写和测试纯红宝石.我希望看守文件和测试文件,并在文件更改时随时运行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"运行,但这似乎也没有帮助.
任何帮助将非常感激.我疯了.
谢谢,杰里米
我正在使用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) 我回去使用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.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) 我正在尝试学习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
是否可以配置'rake test'以在遇到故障/异常时立即停止运行测试?
我的设置:
我想启动测试套件并在测试失败时立即停止 - 默认行为是继续运行所有测试,在某些情况下,数据太多(特别是一个小错误导致大量测试突然失败.)
我有一个很好的小设置与旧版Minitest(4.x)和Turn gem遵循这个要点:( 为minitest/turn/minitest-rails添加一个简单的fail-fast选项),但我正在工作在一个新的Rails 4.1应用程序上,Turn与Minitest 5(尚未)兼容.
有什么想法吗?
我的模型是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 ...
如果不使用摩卡的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) 如何在Minitest中测试ApplicationController before_action?我有一个before_action从url params设置locale但我不知道如何为它设置测试.
.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此刻并不存在.有什么想法吗?谢谢!