【发布时间】:2014-02-19 17:09:15
【问题描述】:
我正在尝试使用 SpecFlow 为我在 Orchard CMS 中的自定义模块编写我自己的集成测试项目。我创建了一个新项目,该项目(当前)位于“src”目录中(与 Orchard.Web 处于同一级别)。
在该项目中,我创建了一个“Bindings”文件夹并从原始 Orchard.Specs 项目中复制了 3 个文件:OrchardSiteFactory.cs、Settings.cs 和 WebAppHosting.cs
我还创建了一个新的 SpecFlow 功能并进行了一个简单的测试,以检查我的自定义模块的管理菜单中是否出现了一个链接。
在 WebAppHosting.cs 中,我更改了 _orchardTemp 的值以反映我的项目所在文件夹的名称,在 OrchardSiteFactory.cs 中,我将我的模块名称(以及它依赖的任何模块)添加到列表中在 GivenIHaveInstalledOrchard 方法中调用 webApp.GivenIHaveACleanSiteWith() 方法的 TableData 参数中的模块扩展。
这将运行站点,安装模块并将所有必要的文件从我的自定义模块复制到 Users{USER}\AppData\Local\Temp{FolderName} 中的 temp WebApp 文件夹...对于所有其他 Orchard 模块。但是它不会为我的模块激活/运行迁移代码。
通过在测试代码中放置一个断点来阻止它删除临时 Web 应用程序文件夹,我能够连接到 SQL Compact Db 并查看创建的表和数据,并且没有我自定义的迹象模块。
我已经在网上和 Orchard 代码中搜索并搜索了有关如何激活模块的线索,因为它显然会激活其他模块(例如博客模块),但我正在画一个空白。我在 WebAppHosting.cs 中尝试了 ExtensionDeploymentOptions 和 DynamicCompilationOption 的各种组合,但没有任何乐趣。
我的测试场景很简单:
Scenario: In the admin (menu) there is a link to the custom module
Given I have installed Orchard
When I go to "admin"
Then I should see "<a[^>]*href="/Admin/MyCustomModule"[^>]*>My Custom Module</a>"
它完全运行,只有当它无法在页面中找到该链接时,字符串比较才会失败(在 HTML 查看器中查看实际字符串会按您的预期显示仪表板,因此其他一切正常。
我要去调查这些配方是否有任何效果/是否可以在测试项目中进行调整。如果有人知道如何让它发挥作用,我将不胜感激
干杯
ETA:这个问题和Orchard论坛上问的一样,但是一直没有回复:http://orchard.codeplex.com/discussions/259028
【问题讨论】:
标签: module integration-testing orchardcms specflow activation