symfony2의 내 behat 테스트에서 sqlite 기반을 사용하려고합니다. 지금까지 심포니 2에서의 behat은 저의 기초를 발견하고 그 안에 비품을 만들 수 있습니다. 문제는 내 테스트 사이트가이베이스에 연결할 수 없다는 것입니다. Symfony2가 sqlite에 연결할 수 없습니다.
이
은 내config_test.yml
: 이것은
doctrine:
dbal:
driver: pdo_sqlite
host: 127.0.0.1
dbname: "%database_name%_test"
path: tests/eg_test.db
내 config.yml
: 이것은
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
내 behat.yml
: 이것은 내가 로그인을 시도 후 다시 얻을 로그입니다
default:
suites:
default:
paths:
features: '%paths.base%/features'
bootstrap: '%paths.base%/features/bootstrap'
contexts:
- FeatureContext: ~
- EwidencjaContext:
userManager: '@fos_user.user_manager'
em: '@doctrine.orm.entity_manager'
packageManager: '@em.package_manager'
extensions:
Behat\Symfony2Extension: ~
Behat\MinkExtension:
base_url: http://nginx/app_test.php
goutte: ~
selenium2:
browser: "chrome"
wd_host: http://selenium_chrome:4444/wd/hub
capabilities: { "browserName": "chrome", "browser": "chrome"}
Bex\Behat\ScreenshotExtension:
image_drivers:
local:
screenshot_directory: tests/features/images/
clear_screenshot_directory: true
내 사이트에. 사용자가 존재하는지 여부는 중요하지 않습니다. 비밀 번호가 잘못되었거나 잘못된 것입니다. 사이트처럼 보이는 것만으로 기지에 연결되지 않습니다.
[2017-03-27 10:22:09] request.INFO : 일치하는 경로 "fos_user_security_check". { "route": "fos_user_security_check", "route_parameters": { "_ 컨트롤러": "FOS \ UserBundle \ Controller \ SecurityController :: checkAction", "_ 경로": "fos_user_security_check"}, "request_uri": "http://localhost/app_test.php/login_check", "메소드 ":"POST "} [] [2017-03-27 10:22:10] security.INFO : 인증 요청에 실패했습니다. 드라이버에서 예외가 발생했습니다 : SQLSTATE [HY000] [14]/var/www에서 데이터베이스 파일을 열 수 없습니다 (예외 : "[object] (Symfony \ Component \ Security \ Core \ Exception \ AuthenticationServiceException (code : 0) /vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/DaoAuthenticationProvider.php:94, Doctrine \ DBAL \ Exception \ ConnectionException (코드 : 0) : 드라이버에서 예외가 발생했습니다 : SQLSTATE [HY000] [14] /var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php:82, Doctrine \ DBAL \ Driver \ PDOException (코드 : 14)에서 데이터베이스 파일을 열 수 없습니다 : SQLSTATE [HY000 ] [14] /var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:47, PDOException (코드 : 14)에서 데이터베이스 파일을 열 수 없습니다 : SQLSTATE [HY000] [14] unable 데이터베이스 파일을 열려면 /var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43) "} [] [2017-03-27 10:22:10] security.DEBUG : 인증 실패, 리디렉션 트리거 됨. { "failure_path": "/ login"} [] [2017-03-27 10:22:10] request.INFO : 일치하는 경로 "fos_user_security_login". { "route": "fos_user_security_login", "route_parameters": { "_ 컨트롤러": "FOS \ UserBundle \ Controller \ SecurityController :: loginAction", "_ 경로": "fos_user_security_login"}, "request_uri": "http://localhost/app_test.php/login", "메소드 ":"GET "} [] [2017-03-27 10:22:10] security.INFO : TokenStorage를 익명 토큰으로 채 웁니다. [] []
을 그리고 난 브라우저에서 로그인 할 때이 내가 내 사이트에서 얻을 오류입니다 :
인증 요청이 시스템 문제로 인해 처리 할 수 없습니다.
드라이버에서 발생 예외 : SQLSTATE [HY000] [14] 데이터베이스 파일을
을 열 수 없습니다 내가 만든 내 sqlite가
그리고 오류가 나는 새로운 사용자를 등록 할 때 데이터베이스를 표준 mysql 기반 메신저에 가까운 prod를 사용합니다. 그 후 나는 bin/console doctrine:schema:update --force --env=test
을 사용했습니다. 내 데이터베이스가 좋은 파일 mod (-rwxrwxr-x)를 가지며 올바른 사용자와 그룹에 의해 사용됩니다.올바른 사용 권한이 여기에 표시 부여 후
doctrine:
dbal:
connections:
default:
driver: pdo_sqlite
path: %kernel.cache_dir%/default.db
charset: UTF8
을 그리고 : Setting up or Fixing File Permissions 당신은 2 또는 3 중 하나는 운영 체제에 따라에서 명령을 실행하는거야
위대한 작품입니다! 감사. 나는 단지 하나의 것을 이해하지 못한다. 이 default.db는 자동으로 생성됩니다. 캐시를 지키면 캐시가 지워 지므로 잃어 버리게됩니다. 테이블과 비품으로 기본을 생성한다고 어떻게 말할 수 있습니까? – Megami
좋아, 내가 코드에서 이미지에서 데이터베이스를 재설정 발견했다. '/ ** * @ BeforeScenario * 데이터베이스가 깨끗한 * @Given */ 공공 기능 theDatabaseIsClean() { 간부 ('PHP 응용 프로그램/콘솔 캐시 : 투명 --env = 테스트'); exec ('php app/console doctrine : database : create --env = test --force'); exec ('php app/console doctrine : schema : update --env = test --force'); exec ('cp tests/features/database/eg_test.db var/cache/test/default.db'); }' – Megami
symfony + Behat 방식으로 할 수 있습니다 : [symfony의 feature context 파일에서 각 동작 시나리오 전에 doctrine 데이터 픽스쳐로드하기] (http://www.inanzzz.com/index.php/post/) sympony의 -pre-context-file-of-symfony 내에서 ypah/loading-doctrine-data-fixtures-before-each-behat- – BentCoder