如何将视图依赖添加到Drupal 8功能测试 -- views 领域 和 8 领域 和 testing 领域 和 configuration 领域 drupal 相关 的问题

How to add a view dependency to a Drupal 8 functional test


3
vote

问题

中文

我正在使用offer model port到drupal 8,目前正在添加其他测试覆盖(#2586125 )。该模块提供现场格式化器和视图样式插件。我对现场格式化器有良好的工作测试覆盖,现在专注于几个观点测试用例(基于Drupal SimpleTest WebTestBase的简单)。

我已经建立了一个简单的视图,它使用我的模块的视图样式插件以及其他一些简单的依赖关系(一些字段存储conf等),并将其导出为耦合的yml conf文件。然而,我不清楚的是在每个功能测试用例期间加载此捆绑视图的最佳实践方法。

想到一些想法:

方法1:捆绑视图作为测试模块依赖项中的配置

i drupal 7标准方法似乎是导出视图,然后在仅测试模块中捆绑它(使用hook_views_default_views()),该模块被安装为测试用例设置的一部分。在D8中,导出的视图yml可以放在测试模块的配置/安装目录中,然后模块在测试类的$ modules属性中取得了依赖关系。

方法2:使用ViewTestData :: CreateTestViews()

,在安装期间显式添加视图

某些d8视图模块自己的测试使用drupal 视图 tests tests viewtestdata :: createTestViews()以及$ testViews属性阵列,直接在测试设置内启用特定视图。类似:

    public static $modules = array('node', 'field', 'image', 'my_module', 'views');    // Views used by this test.   public static $testViews = array('my_test_view'); // Exported yml inside config/test_views of my_test_views_module     /**    * Define setup tasks.    */   public function setUp() {     parent::setUp();     ViewTestData::createTestViews(get_class($this), array('my_test_views_module'));     // Additional setup...   }    

其他因素

加载和缓存的方式,在测试期间解决相关的依赖项是略微神秘的。我注意到,测试案例也以编程方式添加配置,视图取决于(使用 99887661 的内容类型配置或 998876662 for for for for for for for for stail storms config)可以棘手。在这些情况下,方法1可能是有问题的,因为在依赖于以编程方式准备之前可以从CONF加载。这导致我认为方法2可能是潜在的,但所有因素都尚不清楚。

英文原文

I'm working on a contrib module port to Drupal 8 and am currently adding additional test coverage (#2586125). The module provides both a field formatter and a views style plugin. I have good working test coverage for the field formatter and am now focusing on several views test cases (simpletest based on Drupal\simpletest\WebTestBase).

I have built a simple view, that uses my module's views style plugin along with a few other simple dependencies (some field storage conf, etc.), and exported this as a couple yml conf files. What's not clear to me however is the best practice way to load this bundled view during each functional test case.

A couple ideas come to mind:

Method 1: Bundle View as Config in Test Module Dependency

I Drupal 7 the standard method appeared to be to export a view and then bundle it inside a test-only module (with hook_views_default_views()) which is installed as part of the test case setup. In D8 the exported view yml can just be placed inside a test module's config/install directory and then the module made a dependency inside the $modules property of the test class.

Method 2: Add View Explicitly during Setup with ViewTestData::createTestViews()

Some of the D8 views module's own tests use Drupal\views\Tests\ViewTestData::createTestViews(), along with a $testViews property array to directly enable a specific view inside the test setup. Something like:

  public static $modules = array('node', 'field', 'image', 'my_module', 'views');    // Views used by this test.   public static $testViews = array('my_test_view'); // Exported yml inside config/test_views of my_test_views_module     /**    * Define setup tasks.    */   public function setUp() {     parent::setUp();     ViewTestData::createTestViews(get_class($this), array('my_test_views_module'));     // Additional setup...   }  

Other Factors

The way configuration is loaded and cached, and related dependencies are resolved during tests is slightly mysterious. I've noticed that test cases which also programmatically add configuration that a view depends on (using something like $this->drupalCreateContentType() for a content type config or entity_create() for field storage config) can be tricky. In these cases Method 1 could be problematic as the view may get loaded from conf before it's dependencies are programmatically prepared. This is leading me to think that Method 2 is potentially preferred, but all the factors are not yet clear.

           
 
 

回答列表

2
 
vote

有时核心中的代码并不像我们希望的那样漂亮和一致,这可以使其成为一个令人棘手的东西,以了解最佳实践。

视图,似乎这很稳定。您应该创建一个测试模块,并将视图配置YML文件放在模块的Test_Views文件夹中。

节点和REST模块中的示例。

 

Sometimes the code in core is not as pretty and consistent as we would like, which can make it a but tricky to find out what is best practice.

For views, it seems that this is pretty consistent. You should create a test module and have the view config yml files be placed inside a test_views folder of the module.

There are examples of this in node and rest modules.

 
 

相关问题

1  搜索个人内容类型的框  ( Search boxes for individuals content types ) 
我正在尝试在他们的术语页面上为不同的内容类型进行搜索工具。 所以我有一个视图,列出了链接到列出具有该术语的所有节点的页面的所有术语。在此页面上,我希望有一个搜索框,可用于在其内容类型中搜索任何节点。现在这很好,如果我只需要搜索一个内容类型,请使用自定义搜索模块告诉Drupal只搜索一个内容类型。 但是,我需要用上面...

10  如何限制使用视图创建的视频库中显示的节点URL的直接访问?  ( How to limit direct access to urls of nodes that are shown in a video gallery cr ) 
我使用了使用 视图 。但我只希望公开可以访问的页面并阻止单独访问每个视频。 视频必须作为一种内容创建,因此它们都有可访问的ULR,如 /content/video-1 等。 ...

0  无法添加自定义字段以查看  ( Unable to add custom field to view ) 
我创建了一个名为'newsletters'的新内容类型,并创建了图像,文本和链接字段。 然后我创建了一个视图块,当我尝试插入我的自定义字段时,它们不会在字段列表中显示。我检查了我的模块和文件夹的权限,以便不应该是问题,日志中没有错误。 有点令人困惑。 Drupal 7.41 PHP 5.4.45. 查看7.x-3....

2  如何在视图中使用或运算符?  ( How to use the or operator in views ) 
如何创建一个显示的视图,该视图将显示"会计" 类型的所有内容以及分类学术语"会计" (任何内容类型)的所有内容? 我正在尝试使用 Type: Accountancy 或 Taxonomy: Accountancy 但这只是显示分类节点。唯一工作的过滤器是三角洲。 谢谢елин& Morbid - 你们...

0  日历 - 添加与上下文日期过滤器的关系  ( Calendar adding relationship to contextual date filter ) 
我想为某个学生创建一些Inthips的日历视图。但是,当我更改上下文(日期)过滤器来使用关系时,日历中没有显示结果。 当我在列表中构建类似的视图页面而不是日历视图模式时,使用相同的过滤器,结果会返回。 下方的图像我尝试在上下文过滤器中获取关系。 ...

0  如何以视图中编程方式添加链接到图像字段  ( How to programmatically add a link to an image field in a view ) 
我有一个映像字段和其他字段的视图,我需要链接渲染的图像,而不是配置选择的内容,而是在另一个计算的过滤的视图上。 我认为我应该使用 my_theme_preprocess_views_view_field_myviewname 来捕捉这个字段,使用它的名称作为选择器,然后将其包装在计算的链接中,但没有找到如何做到这一点...

1  视图PDF未生成自定义样式PDF输出  ( Views pdf not generating custom style pdf output ) 
我无法打印我的CSS样式内容以呈现PDF输出,我正在使用视图pdf 项目的模块,我的观点正在呈现我的风格,但是当PDF产生没有样式输出时。 需要任何帮助。 ...

1  列出所有录制在节点上的所有用户的评分  ( List all users who voted on a node with their ratings ) 
我正在使用 fivestar 模块在节点上投票。对于每个节点,我想创建一份投票的用户列表,并在给出的评级上进行投票。我正在尝试使用意见3 但我没有看到任何可以给我这个的关系。 我尝试在视图中使用节点基表和用户基表进行此操作。 任何想法我如何要去这个? ...

1  从公开过滤器中的其他内容类型获取标题字段  ( Get title field from another content type in exposed filter ) 
我有两个内容类型: Project 和 Task 。 Project 有一个节点参考字段 Task - 创建 99887669 时,您会添加对项目之一的引用。 我需要创建一个 function mymodule_views_query_filter(&$view, $query) { if($view-...

0  添加描述以查看手风琴  ( Adding a description to view accordion ) 
我使用的是格式视图手风琴的视图。 到目前为止,我的景色如下所示: 奖励1 -Person1 -Person2 ...... 奖励_N -person_n -person_n + 1 其中奖励是手风琴动作的"标题" 或"触发" 。 这正按预期工作。我正在尝试进一步扩展它来看起...

4  如何基于身体中的字符数显示视图块?  ( How to display a view block based on number of characters in body ) 
我目前有一个视图,它会创建"关于作者" 框,从用户的配置文件中提取信息,并根据节点(内容)的作者显示相应的作者框。我只想在节点中具有最小字符量的节点上显示它。 (它目前显示所有节点,块已启用。) 所需的结果是长块内容有一个"关于作者" 框,而短件的内容没有。 我所拥有的问题是,当我选择视图的过滤条件时,未列出节点的主...

1  视图标签过滤器  ( Views tag filter ) 
我似乎无法让我的标签过滤我打算他们的工作方式。 我想要做什么: 我有一个词汇,通过附加到文章内容类型的标签字段创建。 我有一个内容类型foo,我正在创建一个观点,以列出与foo标题相对应的标记的'文章' 前: 文章类型: 1 - 标签:'yay你' 2-标签:'yay me' foo类型 1 - 标题:'Yay...

1  视图和面板:从视图中排除已显示的项目  ( Views and panels exclude already displayed items from view ) 
我在FrontPage上有两个视图,第一个是一个画廊,它只能显示"促进到FrontPage" 的文章检查。第二个视图应显示除了第一个视图中显示的所有文章。 我看到这个问题,但答案并没有帮助我,因为在第二个视图中,我不想排除" 升到FrontPage"的文章,我只是想要为了排除其中的前6个,所有其他应似乎与其他物品混合...

1  将网站导出到CSV,JSON,电子表格等的所有视图  ( Export all views on a site to csv json spreadsheet etc ) 
问题。 如何从Drupal网站导出记录的所有视图的电子表格? 更多信息: 假设您想要一个站点上所有视图的摘要,也许您将重建它们 - 也许那里有一些iffy php_views。也许你只是记录一个你继承的杂乱网站。 虽然有支持将单个视图导出到各种格式,但导出对电子表格的全部视图的全面列表并不容易。 ...

2  过滤器包含完整的单词吗?  ( Is filter contains all words working well ) 
我有一个视图和过滤器,"包含所有单词" 。我看到SQL包含表达式 '%word1%' AND '%word2%', 但是,如果我写"角度" ,就在我开始写作"A" 时,也有字符A且不一定从A开始的单词出现,例如"物质" 。 不应该占位符%只在一个地方,以这种方式: LIKE ( 'word1%' AN...

1  如何使用Search API SEAVED搜索模块查看模块? [关闭]  ( How use search api saved searches module for views ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并阐明编辑此帖的问题。 关闭 4年前。 ...

1  如何在视图中更改输出字段日期?  ( How to change the output field date in a view ) 
我想在视图中改变字段'日期'以使用' hook_views_query_alter '只显示年份,以便我只能在日期字段中显示一年。 我正在尝试以下代码,这不起作用。任何人都可以帮助我吗? 我不确定为代码中的字段分配新值。 function alb_jobs_views_query_alter(&$view, &$...

2  如何创建报告以列出仅更改特定字段的用户?  ( How to create report to list users who change only specific field ) 
我有一个包含多个字段的内容类型,这些字段由不同的用户随时间手动更新。 让我们说,例如,内容类型名称 票证 此内容类型中的字段是: 票证状态 票证已解析日期 票升级日期(默认为空) 每次用户更改字段时,会自动创建修订版。 如何创建报告(使用 measies 模块)列出用户只会将字段"票升级日期" 更改为空到某个值...

0  输出视图_embed_view到Ajax内容  ( Output views embed view to ajax content ) 
我有一个视图块。我可以用 views_embed_view 函数打印内容,传递 $ display_id ,上下文过滤器等。 现在我希望用户单击图像中的一个点,并使用JavaScript,显示DIV中的块。因此,当用户单击图像的不同坐标时,我在该DIV中显示了不同的产品详细信息。 这应该可以使用ajax( $(#di...

1  如何设置视图以显示不复制其他文件的现场集合条目?  ( How to set views to show field collection entries with not duplicated other file ) 
我有两个内容类型的字段。一个是"链接" ,其他是"文件& text" (字段集合;值数:无限制),具有两个字段:"文件" 和"文本" 。 关系: 内容:"文件&文本" 问题是:每个"文件&文本" 条目重复"链接" 字段。 我尝试了查询设置/拼凑而是,而不是进行任何进展。 任何提示? ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.