加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 仅在使用Behat时发生语义错误

发布时间:2020-12-13 22:25:46 所属栏目:PHP教程 来源:网络整理
导读:你好StackOverflow社区,我刚加入社区,这是我的第一个问题:) 我正在使用Symfony2.当我使用浏览器(firefox)手动访问页面时: http://localhost:8000/vendor/add-product 页面呈现正常,我看到一个表单,允许用户将产品添加到他的商店. 但是当我使用Behat进行测试
你好StackOverflow社区,我刚加入社区,这是我的第一个问题:)

我正在使用Symfony2.当我使用浏览器(firefox)手动访问页面时:

http://localhost:8000/vendor/add-product

页面呈现正常,我看到一个表单,允许用户将产品添加到他的商店.

但是当我使用Behat进行测试时,我收到此错误:

[Semantical Error] The annotation “@SymfonyComponentValidatorConstraintsGreaterThanOrEqual”
in property AppBundleEntityProduct::$productPrice does not exist,
or could not be auto-loaded.

这是相关源代码(的一部分):

namespace AppBundleEntity;

use DoctrineORMMapping as ORM;
use SymfonyComponentValidatorConstraints as Assert;
use SymfonyBridgeDoctrineValidatorConstraintsUniqueEntity;

/**
* @ORMEntity
* @ORMTable(name="app_products")
*/
class Product
{
    /**
    * @ORMId
    * @ORMColumn(type="integer")
    * @ORMGeneratedValue(strategy="AUTO")
    */
    private $productId;

    /**
    * @ORMColumn(type="integer")
    * @ORMManyToOne(targetEntity="AppBundleEntityStore")
    */
    private $storeId;

    /**
    * @ORMColumn(type="string",length=255)
    * @AssertNotBlank(message="This is important,Product Name should not be blank!")
    * @AssertLength(max = "255",maxMessage="Your description must not exceed 255 characters.")
    */
    private $productName;

    /**
    * @ORMColumn(type="integer",length=255)
    * @AssertGreaterThanOrEqual(value=0)
    * @AssertNotBlank(message="Product Price should not be blank!")
    */
    private $productPrice;

    /**
    * @ORMColumn(type="string",length=255)
    * @AssertNotBlank(message="Please enter a product description.")
    * @AssertLength(max = "255",maxMessage="Your description must not exceed 255 characters.")
    */
    private $productDescription;

    /**
    * @ORMColumn(type="integer")
    * @AssertGreaterThanOrEqual(value=0)
    * @AssertNotBlank(message="Product Quantity should not be blank!")
    */
    private $productQuantity;

    /**
    * @ORMColumn(type="string",length=255)
    * @AssertFile(mimeTypes={ "image/jpeg" })
    * @AssertFile(maxSize="6000000")
    */
    private $productImage;
    ...

这是我的特色:

Feature: Buying products
As a customer,I want to view and select products before buying,So that I could have more value for my money

Background:
    Given I am on the homepage
    When I fill in "username" with "24thsaint"
    And I fill in "password" with "123123"
    And I press "login-button"

Scenario: Vendor wants to add a new product
    Given I am on the homepage
    When I follow "My Store" ###### The test stops here as I get the Semantical Error
    And I follow "add-new-product"

请帮忙,我真的觉得一切都到位了.只是在使用Behat进行测试期间发生了错误.什么可能出错?

编辑:

我通过清除缓存做了先生Evgeniy Kuzmin的建议.我跑了,

php bin/console cache:clear --env=test

之前通过的测试现在失败,出现此错误:

[Semantical Error] The annotation "@DoctrineORMMappingEntity" in 
class AppBundleEntityUser does not exist,or could not be auto-loaded.

请帮我.

解决方法

当您通过localhost手动访问表单时,很可能使用dev env.但是当Behat走向同一条路线时,它会使用测试环境.

所以首先尝试使用选项“-e test”清除缓存

另一点是检查你config_test.yml,可能你覆盖那里的选项

framework:
    validation: { enabled: true,enable_annotations: true }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读