it-source

JS를 테스트하기 위해 레일 각도 프로젝트를 설정하려면 어떻게 해야 합니까?

criticalcode 2023. 4. 1. 09:34
반응형

JS를 테스트하기 위해 레일 각도 프로젝트를 설정하려면 어떻게 해야 합니까?

JS 테스트를 제공하기 위해 레일 각도 프로젝트를 설정하려고 합니다.Google에서 찾은 거의 모든 것을 시도해 보았습니다.

다 떨어졌어요.유닛 및 e2e 테스트를 가장 쉽게 실행할 수 있는 방법을 찾고 있습니다(가드 또는 카르마로 실행해도 상관없습니다만, 백그라운드에서 자동으로 실행되어야 합니다).

이것을 실현하는 방법에 대한 좋은 예가 있는 좋은 기사를 가지고 있는 사람이 있습니까?내가 조사한 바로는 이것이 발견되었지만, IMHO는 이것을 하지 않는 방법의 한 예이다.

의 실제 ★★★★★★★★★★★★★★★.Gemfile:

source 'https://rubygems.org'

# Use Ruby 1.9.3 instead default Heroku's 1.9.2
# for development I suggest https://gist.github.com/1688857
ruby '1.9.3'

gem 'rails', '3.2.12'

# Use PostgreSQL, which is quite awesome, fast and easy
gem 'pg'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails', '~> 3.2.3'
  gem 'bootstrap-sass', '~> 2.3.1'

  # I heard that you like Compass
  gem 'compass'

  # Angular.js
  gem 'angularjs-rails'
  gem 'angularjs-rails-resource'
  gem 'angular-ui-rails'

  # Assets should be minified before production
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# Serve static pages like a boss
gem 'high_voltage'

# Some user management will be nice
gem 'devise' # User management
# gem 'cancan' # And they privileges

# To use Jbuilder templates for JSON
gem 'jbuilder'

# Be fast and deadly as Puma
#gem 'puma'

# We need also some administration panel, don't we?
gem 'rails_admin'

# Some helpers
gem 'andand'

group :development do
  # IRb is ugly. Use Pry for the God's sake
  gem 'pry-rails'

  # Deploy with Capistrano
  # gem 'capistrano'
  # or Vlad the Deployer
  # gem 'vlad'

  # Why bother yourself with rerunning tests? Use Guard
  gem 'guard'
  gem 'guard-rspec'
  gem 'guard-spork'
  gem 'guard-livereload'
  gem 'guard-jasmine'
  gem 'rb-fsevent', require: false
  gem 'rb-inotify', require: false

  # Who like ugly error pages? We don't.
  gem 'better_errors'
  gem 'binding_of_caller'

  # Prettier documentation
  gem 'yard'
end

group :development, :test do
  # Use RSpec for testing
  gem 'rspec-rails', '~> 2.12.0'

  # Test JS using Jasmine
  gem 'jasmine'
  gem 'jasmine-headless-webkit'

  # Some DB table generator
  gem 'factory_girl_rails', '~> 4.1.0'

  # And fake data generator
  gem 'ffaker'
end

group :test do
  # Some Gherkins will be also good (to vodka of course)
  gem 'turnip', '~> 1.1.0'

  # Aww, an of course some web browser will be also apprised
  gem 'capybara', '~> 2.0.1'

  # Clean DB after tests
  gem 'database_cleaner'

  # Some nice matchers
  gem 'shoulda-matchers'

  # Extend your mocks
  gem 'bourne', '~> 1.2.1'

  # Coverage reports will be nice
  gem 'simplecov', require: false
end

PS: 커버리지 리포트를 간단하게 작성할 수 있으면 좋겠습니다.

마음에 드는 테스트 스위트(디폴트는 재스민)를 실행하는 티스푼을 사용할 수 있습니다.또한 각도와 통합하기 위한 Wiki가 있습니다.Teaspoon은 자산 파이프라인과 통합되므로 모든 각진 보석을 Teaspoon 생성 spec_helper.js에 넣을 수 있습니다.

또 다른 장점은 가드 플러그인도 사용할 수 있다는 것입니다.

Rails 앱의 모든 테스트를 실행하는 데 약간의 시행착오가 있었습니다.개발자의 스펙, 합격, Javascript에 대한 지속적인 테스트를 위해 Guard를 사용하게 되었습니다.이것이 내 노력의 결실이다.

이것은 당신이 포함해야 할 Gemfile의 단편입니다.Gems for Guard, Jasmine, Rspec, Turnip이 필수입니다.이 설정은 MRI와 JRuby에서 작동하며, 두 가지 모두에 대해 테스트를 수행합니다.

group :test, :development do
  # Guard
  gem 'guard-jasmine'
  gem "guard-bundler", ">= 1.0.0"
  gem "guard-rails", ">= 0.4.0"
  gem "guard-rspec", ">= 2.5.2"
  gem "rb-inotify", ">= 0.9.0", :require => false
  gem "rb-fsevent", ">= 0.9.3", :require => false
  gem "rb-fchange", ">= 0.0.6", :require => false

  # Rspec
  gem "rspec-rails", '~> 2.12.2'

  # Jasmine
  gem "jasmine", '~> 1.3.1'
  gem "jasminerice"
end

group :test do
  # Turnip
  gem "turnip", '~> 1.1.0'
  gem "capybara", '~> 2.0.3'
end

이것은 Rspec, Turnip 및 Jasmine을 감시하고 테스트를 트리거하는 완전한 가드파일입니다.

guard 'rspec' do
  watch(%r{^spec/.+_spec\.rb$})
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
  watch('spec/spec_helper.rb')  { "spec" }

  # Rails 
  watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
  watch(%r{^app/(.*)(\.erb|\.haml)$})                 { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
  watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
  watch(%r{^spec/support/(.+)\.rb$})                  { "spec" }
  watch('config/routes.rb')                           { "spec/routing" }
  watch('app/controllers/application_controller.rb')  { "spec/controllers" }

  # Turnip features and steps
  watch(%r{^spec/acceptance/(.+)\.feature$})
  watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$})   { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
end

guard :jasmine do
  watch(%r{spec/javascripts/spec\.(js\.coffee|js|coffee)$}) { 'spec/javascripts' }
  watch(%r{spec/javascripts/.+_spec\.(js\.coffee|js|coffee)$})
  watch(%r{spec/javascripts/fixtures/.+$})
  watch(%r{app/assets/javascripts/(.+?)\.(js\.coffee|js|coffee)(?:\.\w+)*$}) { |m| "spec/javascripts/#{ m[1] }_spec.#{ m[2] }" }
end

이제 좀 까다로워지네요.재스민에게 앵귤러를 적절히 적재시키려면테스트용 JS는 angular-mocks.js 1.0.7디렉토리 사양/javascripts/support/angular-mocks.js에 다운로드했습니다.이는 스펙 도우미와 재스민 구성에 의해 Anguljar를 실행하기 위해 사용됩니다.JS 사양

spec/javascripts/spec_helper.js.coffee의 경우 Rails 앱 javascript, angular-mocks.js 및 모든 javascript 사양을 가리킵니다.

#=require ../../app/assets/javascripts/application
#=require ./support/angular-mocks
#=require_tree ./

Jasmine 설정(spec/javascripts/support/jasmin.yml)의 경우 설정은 Rails 앱 javascript와 angular-mocks.js를 가리켜야 합니다.사용하는 방법은 다음과 같습니다.단, 간결하게 하기 위해 코멘트를 삭제해 주세요.

src_files:
  - assets/application.js
  - spec/javascripts/support/angular-mocks.js

stylesheets:
  - stylesheets/**/*.css

helpers:
  - helpers/**/*.js

spec_files:
  - '**/*[sS]pec.js'

src_dir:

spec_dir: spec/javascripts

모든 것을 준비했으니, 그냥 뛰어가기만 하면 된다.bundle exec guard모든 테스트는 개발 변경으로 인해 실행됩니다.

Angular를 설정하는 간단한 방법에 대해 블로그에 글을 올렸습니다.기본 Jasmine Gem을 사용하여 Rails 앱에서 JS 유닛 테스트.작업을 원활하게 진행하기 위해 약간의 코드 변경이 필요했고, Jasmine 팀은 이를 수락했습니다.

http://pivotallabs.com/unit-testing-angularjs-using-jasmine/

한마디로:

Gemfile에 Jasmine과 angularjs-rails 추가

gem "angularjs-rails"
gem "jasmine", github: "pivotal/jasmine-gem"

보석을 설치하고 Jasmine 제너레이터를 실행합니다.

$ bundle install
$ rails g jasmine:install

어플리케이션 코드의 나머지 부분보다 먼저 angular를 어플리케이션.js에 추가합니다.

//= require angular
//= require_tree .

파일 생성:./spec/javascripts/helpers/angular_helpers.js이 행을 추가합니다.

//= require angular-mocks

이제 Angular를 포함할 수 있습니다.JS 구현 파일app/assets디렉토리 테스트와 기입 테스트를 실시합니다.업그레이드 할 때angularjs-railsgem, 당신은 새로운 버전을 얻을 것입니다.angular.js그리고.angular-mocks.js동시에.

빌드 시스템으로서 Grunt를 사용하고 있는 각진 보일러 플레이트 프로젝트를 체크하는 것은 행운이지만, 각진 테스트를 할 때는 nodejs/karma 루트로 가는 것이 유일한 희망이라고 생각합니다.

이 셋업은 코드의 변경을 감시하고 테스트를 실행합니다.하지만 제 경험상 테스트 실행 결과를 보여주지 못했습니다.내가 뭘 잘못하고 있는지, 지원이 안 되고 있는지 모르겠다.

어쨌든 이게 도움이 되길 바래

언급URL : https://stackoverflow.com/questions/16159395/how-do-i-set-up-a-rails-angular-project-to-test-js

반응형