ApprovalTests with TestCase (Nunit) 使用相同的批准文件

ApprovalTests with TestCase (Nunit) use the same approval file

我遇到一个问题,即使用 ApprovalTests.Net 和 NUnit,所有 运行 的测试都使用相同的批准文件,该文件的名称源自测试方法名称。

是否可以以某种方式为每个测试用例指定单独的批准文件?

[Test]
[TestCase("test",TestName="Test1")]
[TestCase("test2",TestName="Test2")]
Testing_Method(string param)
{
   //somestuff
   ObjectApprover.VerifyJson(someObject); // fails for second case 
                                          // because it uses the same 
                                          // approval file as the first case,
                                          // which is not the same
}

您可以使用 [TestCaseSource] 属性而不是 [TestCase] 属性。

https://ignas.me/tech/nunit-testcasesource-example/ - 带有解释的 TestCaseSource 示例。

你需要使用

ApprovalResults.ForScenario("extra info")

像这样:

[Test]
[TestCase("test",TestName="Test1")]
[TestCase("test2",TestName="Test2")]
Testing_Method(string param)
{
   //somestuff
   using (ApprovalTests.Namers.ApprovalResults.ForScenario(param))
   {
       ObjectApprover.VerifyJson(someObject); 
   }
}

这将产生 2 个批准文件:

TestClassName.Testing_Method.ForScenario.Test1.approved.json
TestClassName.Testing_Method.ForScenario.Test2.approved.json