কীভাবে পরীক্ষার পরিবেশে রেল কনসোল চালানো যায় এবং টেস্ট_হেল্পার.আরবি লোড করা যায়?


121

ব্যাকগ্রাউন্ড: থটবটের "ফ্যাক্টরি গার্ল" রত্নটিতে আমার কিছু সমস্যা হচ্ছে, ইউনিট এবং অন্যান্য পরীক্ষায় ব্যবহারের জন্য অবজেক্ট তৈরি করতে ব্যবহৃত হয়। আমি কনসোলে গিয়ে বিভিন্ন ফ্যাক্টরি গার্ল কল চালাচ্ছি যা ঘটছে তা খতিয়ে দেখার জন্য। উদাহরণস্বরূপ, আমি সেখানে যেতে চাই ...

>> Factory(:user).inspect

আমি জানি যে আপনি বিভিন্ন পরিবেশে কনসোল চালাতে পারেন ...

$ স্ক্রিপ্ট / কনসোল RAILS_ENV = পরীক্ষা

তবে আমি যখন এটি করি তখন কারখানার ক্লাস পাওয়া যায় না। দেখে মনে হচ্ছে যেন test_helper.rbবোঝা হচ্ছে না।

আমি requireসম্পূর্ণ কল সহ একটি কল সহ বিভিন্ন কল চেষ্টা করেছিলাম test_helper.rbকিন্তু তারা এর সাথে একইভাবে ব্যর্থ হয়:

$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
  Errno::ENOENT: No such file or directory - 
  /Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb

Grr। আহা।


1
ফলস্বরূপ আপনি যদি স্ক্রিপ্ট / কনসোলের আগে RAILS_ENV = পরীক্ষা রাখেন, এটি আপনার প্রত্যাশা মতো কাজ করবে।
জেয়ার্ড

উত্তর:


192

রেলের জন্য <3.0

চালান script/console --help। আপনি লক্ষ করবেন যে বাক্য গঠনটি script/console [environment]আপনার ক্ষেত্রে যা তা script/console test

আমি নিশ্চিত না যে আপনার যদি পরীক্ষার সহায়ক প্রয়োজন হয় বা পরীক্ষার পরিবেশ আপনার পক্ষে তা করে থাকে তবে এই আদেশের সাহায্যে আপনার কমপক্ষে পরীক্ষা env এ সফলভাবে বুট করতে সক্ষম হওয়া উচিত।

সাইডেনোট হিসাবে: এটি সত্যই এক রকমের বিষয় যে স্ক্রিপ্টের বিভিন্ন বাইনারিগুলির / রেলের পরিবেশ নির্ধারণের বিভিন্ন উপায় রয়েছে different

3 এবং 4 এর জন্য

চালান rails c testbundle execআপনার বর্তমান অ্যাপ্লিকেশন পরিবেশের জন্য এটির প্রয়োজন হলে প্রস্তুত করুন।

5 এবং 6 এর জন্য

চালান rails console -e test


63
রেল 3 এ, এটি ঠিকrails console [environment]
ইদ্রিস মোখতারজাদা

26
আপনি যে সার্ভারটি টাইপ করেছেন তা শুরু করতে এটি কিছুটা বেমানানrails server -e test
জেসন

5 রেলগুলিতে এটি এখনও কাজ করে। এবং, আপনাকে আপনার পরিবেশের কমপক্ষে কিছু অংশ লোড করতে হবে - আমার ক্ষেত্রে features/support/helpers.rbস্বয়ংক্রিয়ভাবে লোড হয়নি। এছাড়াও, Rack::Testবোঝা হয় না।
ডেরেল ডুরেট

61

রেল 3 এ, কেবল করুন rails console testবা rails console productionবা rails console development(যা ডিফল্ট)।



8

Ails.২.০ রেলগুলির জন্য: "নিয়মিত যুক্তি হিসাবে পরিবেশের নামটি হ্রাস করা হবে এবং পরবর্তী রেল সংস্করণে অপসারণ করা হবে। দয়া করে পরিবর্তে -e বিকল্পটি ব্যবহার করুন।"

rails c -e test

4

কনসোল কমান্ডটি পরিচালনা করা উচিত এমন পরিবেশ আপনি নির্দিষ্ট করতে পারেন।

rails c [environment]

উদাহরণ

1) মঞ্চের জন্য

rails c staging

2) উত্পাদনের জন্য

rails c production

উত্স এবং বিশদ বিবরণের জন্য: রেল কমান্ড লাইন


3

ডেভিড স্মিথ ঠিক আছে, ঠিক আছে

script/console test

সহায়তা কমান্ডটি দেখায় যে এটি কেন কাজ করে:

$ script/console -h
Usage: console [environment] [options]
    -s, --sandbox                    Rollback database modifications on exit.
        --irb=[irb]                  Invoke a different irb.
        --debugger                   Enable ruby-debugging for the console.

এটি [পরিবেশ] বিট।


2

আমি প্রশ্নকারীর বেদনা ভাগ করে নিই। এখানে সত্যিই তিনটি পৃথক প্রশ্ন রয়েছে, যার মধ্যে কয়েকটি সমাধান করা হয়েছে, কিছু নয়:

  1. আপনি পরীক্ষার পরিবেশে কনসোলটি কীভাবে শুরু করবেন?

    সাম্প্রতিক রেলের সংস্করণগুলির জন্য bundle exec rails c test, বা এর জন্য বিকল্প বাক্য গঠন।

  2. আপনি কীভাবে নিশ্চিত করবেন যে পরীক্ষা / পরীক্ষা_হেল্পার.আরবি সেই কনসোল সেশনে লোড হয়েছে?

    এর মতো কিছু করা require './test/test_helper'উচিত।

    আমার জন্য, এটি সত্য ফিরে আসে, এটি ইঙ্গিত করে যে আমি কনসোল শুরু করার সময় এটি ইতিমধ্যে লোড করা হয়নি। যদি উক্ত বিবৃতিটি মিথ্যা প্রত্যাবর্তন করে তবে আপনি কেবল কয়েকটি কীস্ট্রোক নষ্ট করেছেন, তবে আপনি এখনও ভাল good

  3. একবার টেস্টহেল্পার লোড হয়ে গেলে আপনি এর মধ্যে নির্ধারিত পদ্ধতিগুলিকে কীভাবে কল করবেন?

    একটি সাধারণ টেস্টহেল্পারে, কাস্টম পদ্ধতিগুলি সাধারণত অ্যাক্টিভসপোর্ট :: টেস্টক্যাসের উদাহরণ পদ্ধতি হিসাবে সংজ্ঞায়িত হয়। সুতরাং আপনি যদি তাদের একটিতে কল করতে চান তবে আপনার সেই শ্রেণীর উদাহরণ দরকার। পরীক্ষা এবং ত্রুটি দ্বারা, অ্যাক্টিভসপোর্ট :: টেস্টক্যাস.নুতে একটি প্রয়োজনীয় প্যারামিটার রয়েছে, তাই ... এটি কিছু পাস করুন।

    আপনার টেস্ট_হেল্পারের যদি ক্রিয়েটিউজার নামে একটি পদ্ধতি থাকে তবে আপনি এটি এইভাবে ডাকতে পারেন: ActiveSupport::TestCase.new("no idea what this is for").create_user


ট্রায়াল বা ত্রুটির পরিবর্তে - api.rubyonrails.org/classes/ActtiveSupport/TestCase.html এর কী প্রয়োজন তা জানতে রেলগুলি API গাইড ব্যবহার করুন ... এটি সম্ভবত পরীক্ষার আদেশ যা :randomপূর্বনির্ধারিত
মিরভ - ম্যাট

অ্যাক্টিভসপোর্ট :: টেস্টক্যাসের জন্য কেবল বর্ণিত two দুটি শ্রেণীর পদ্ধতি রয়েছে, সুতরাং এটি কোন initializeপদ্ধতি / মডিউল থেকে এর পদ্ধতিটি উত্তরাধিকার সূত্রে প্রাপ্ত তা সম্পর্কে আমি অস্পষ্ট । এটি দেখতে প্যারামিটারের মতো দেখে মনে হচ্ছে @NAMEএটি তৈরি করা বস্তুর মতো সঞ্চয় হয়ে যায় stored
নিক ডেভিস

1

আপনি জিইএম ইনস্টল করেছেন তা নিশ্চিত করে নিন এবং আপনি নীচের লাইনটি আপনার পরিবেশে.আরবি বা টেস্ট.আরবি ফাইলটিতে যুক্ত করেছেন।

config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"

0

পরীক্ষা Env

rails console test # or just rails c test

বিকাশ Env

rails console # or just rails c

0

রেলস কনসোল পরীক্ষার পরিবেশ চালানোর কমান্ড

rails c -e test

অথবা

RAILS_ENV=test rails c

যদি আপনি সমস্যার মুখোমুখি হন তবে এমন কিছু

ActiveRecord::StatementInvalid:
   Mysql2::Error: Table 'DB_test.users' doesn't exist: SHOW FULL FIELDS FROM `users`

তারপরে আপনার প্রথমে দৌড়ে আপনার পরীক্ষা ডিবি প্রস্তুত করা উচিত

bundle exec rake db:test:prepare
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.