我是一个新手,通过创建我的第一个rails应用程序绊脚石.我正在尝试从嵌套表单向表中添加多个记录,目前只添加了最后一条记录.
我正在制作一个表格,允许用户将数学方程与在给定阅读规则下应该如何阅读相关联.在抽象视图中,两个简单记录将是:
equation: "x-3", readingRule:"Simple", transcription"x take away three"
equation: "x-3", readingRule:"Standard", transcription"x minus three"
Run Code Online (Sandbox Code Playgroud)
我有四个表:'方程','转录','readingRuleSets'和'测试'.单个测试由等式的id,转录和readingRuleSet组成.
我有一个表单,其中有一个文本字段供用户选择方程式的id,以及四个文本字段(与我的四个阅读规则集相关联),供他们选择转录的id.当我点击提交时,我想要添加四个新的"测试",每个转录一个.目前,Rails只添加了最后一个.
我认为这是因为html源中文本字段的id是相同的.我尝试将字段名称与each_with_index中的索引连接起来,但这使得我将一条记录添加到'test',并且reading_rule_set_id为null,因为我修改了带有索引的列的名称.所以我已经把它拿出来了,看了很多,看了看看有轨电视196,我还是被卡住了.
代码的相关部分:
\程序\型号\ test.rb
class Test < ActiveRecord::Base
has_many :equations
has_many :reading_rule_sets
has_many :transcriptions
accepts_nested_attributes_for :equations :transcriptions :reading_rule_sets
end
Run Code Online (Sandbox Code Playgroud)
其他三个表分别有'belongs_to'.
\程序\意见\测试:
<div>
<fieldset>
<legend> Reading Rules and Transcriptions </legend>
<% ReadingRuleSet.all.each_with_index do |rrs, index| %>
<div class="row">
<div class="col-md-6">
<label><%= rrs.name %></label>
</div>
<div class="col-md-6">
<%= f.text_field :transcription_id %>
<%= f.hidden_field :reading_rule_set_id, :value =>rrs.id %>
<!--# .to_s + index.to_s-->
</div>
</div>
<% end …Run Code Online (Sandbox Code Playgroud) TL;DR:按照标题:我如何运行相同的测试但有不同的设置?
我正在使用 C#、Visual Studio 工作,通过 Azure DevOps(nee VSTS)部署到 Azure 中的 WebApp。
正在开发的软件在 Azure 中配置资源,并在 Azure Active Directory 中配置身份。
这意味着我有这样的测试:
[Fact]
public void ShouldCreateAzureDevOpsProject()
{
_azureDevOpsHelper.GetAzureDevOpsProject(_projectName).Should().NotBe(null);
}
[Fact]
public void ShouldPutDefaultFileInRepo()
{
_azureDevOpsHelper.GetDefaultFileFromRepo(_projectName).Should().NotBe(null);
}
[Fact]
public void ShouldEnableAllMicrosoftResourceProviders()
{
_azureSubscriptionHelper.GetMicrosoftResourceProviders().Select(x => x.RegistrationState).Should().NotContain("NotRegistered");
}
Run Code Online (Sandbox Code Playgroud)
我想在编写代码时对代码运行这些测试。该代码在我的笔记本电脑上运行,因此设置(我目前在 xUnit Fixture 中)是:
new EngineOrchestrator.EngineOrchestrator().RequestInstance(userSuppliedConfiguration);
Run Code Online (Sandbox Code Playgroud)
但这些测试同样适用于在我们的部署管道中运行,以在部署到我们的测试环境后检查回归情况。出于这些目的,设置将涉及创建 HTTP 客户端并访问应用程序的端点。
要点是,无论设置如何,测试都是相同的。在“本地”和“管道”情况下,要测试的值均来自 json 配置文件;隔离是通过在部署期间为测试添加不同的配置文件来实现的。
换一种方式; 我正在尝试弄清楚如何封装该设置,以便两个不同的设置可以共享相同的测试。这与夹具等的作用相反,多个测试可以共享相同的设置。
if (Environment.MachineName.StartsWith("Plavixo"))
{
new EngineOrchestrator.EngineOrchestrator().RequestInstance(userSuppliedConfiguration);
}
else
{
HttpEngineHelper.RunOrchestrator(userSuppliedConfiguration, authenticationDetails);
}
Run Code Online (Sandbox Code Playgroud)
这是我当前的解决方案,但它感觉很脆弱,并且使测试工件变得巨大,因为它必须包含能够更新引擎的所有源代码,即使它要在构建机器上运行。
public class LocalBootstrap : BootstrapTests.BootstrapTests
{
public LocalBootstrap():base() …Run Code Online (Sandbox Code Playgroud)