StoryQ BDD 调用任务 C#
StoryQ BDD calling a Task C#
我有一个测试,我想在其中使用 returns 一个 Task
的函数
函数
public async Task FuncExceuted()
我的测试
[Test]
public void CreateNewProject()
{
_story.WithScenario("Create a new Project for Bayer sensor")
.Given(InitParameters())
.When(await FuncExceuted())
.Then(AssertFunction())
.Execute();
}
有没有办法使用 StoryQ,因为这些是我得到的错误:
错误 CS1502:'StoryQ.Scenario.Given(System.Action)' 的最佳重载方法匹配有一些无效参数
错误 CS1503:参数 1:无法从 'void' 转换为 'System.Action'
更新:
我也试过
[Test]
public async void CreateNewProject()
{
_story.WithScenario("Create a new Project for Bayer sensor")
.Given(InitParameters)
.When(await FuncExceuted)
.Then(AssertFunction)
.Execute();
}
错误 CS4001:无法等待 'method group'
错误 CS1502:'StoryQ.Condition.When(System.Action)' 的最佳重载方法匹配有一些无效参数
错误 CS1503:参数 1:无法从 'void' 转换为 'System.Action'
更新二:
[测试]
public async Task CreateNewProject()
{
_story.WithScenario("Create a new Project for Bayer sensor")
.Given(InitParameters)
.When(async ()=> await FuncExceuted())
.Then(AssertFunction)
.Execute();
}
编译中!但运行时错误
ArgumentException -> 如果您在方法名称中使用 2 个下划线,请确保有 2 个参数(找到 0 个)
错误抱怨 Given()
,不是任何任务:
error CS1502: The best overloaded method match for 'StoryQ.Scenario.Given(System.Action)' has some invalid arguments
error CS1503: Argument 1: cannot convert from 'void' to 'System.Action'
变化:
.Given(InitParameters())
收件人:
.Given(InitParameters)
或
.Given(() => InitParameters())
Given()
需要一个 Action 委托,或者可以转换为 Action 的东西。当执行测试时,StoryQ 本身将调用该操作。
您输入的内容会立即调用该方法并将结果 (void
) 传递给 Given()
。这就是编译器抱怨无法将 void
转换为 Action
的原因
编辑
看起来所有的电话都有同样的问题。全部传递函数调用的 结果 而不是预期的 Action 或 Func.
代码应替换为:
_story.WithScenario("Create a new Project for Bayer sensor")
.Given(()=>InitParameters())
.When(async ()=>await FuncExceuted())
.Then(() => AssertFunction())
.Execute();
FuncExecuted
不是 函数 。这是一种异步方法。使用异步方法的标准命名约定,它应该命名为 ExecutedAsync
.
如果 StoryQ 可以处理异步方法,可以简单地写成:
.When(()=>ExceutedAsync())
还有。使方法异步的不是 async/await
,而是它内部发生的事情和 return 类型的任务。
如果 StoryQ 无法处理异步方法,则可能必须显式等待该方法,例如:
.When(()=>FuncExceuted().Wait())
我有一个测试,我想在其中使用 returns 一个 Task
的函数函数
public async Task FuncExceuted()
我的测试
[Test]
public void CreateNewProject()
{
_story.WithScenario("Create a new Project for Bayer sensor")
.Given(InitParameters())
.When(await FuncExceuted())
.Then(AssertFunction())
.Execute();
}
有没有办法使用 StoryQ,因为这些是我得到的错误:
错误 CS1502:'StoryQ.Scenario.Given(System.Action)' 的最佳重载方法匹配有一些无效参数
错误 CS1503:参数 1:无法从 'void' 转换为 'System.Action'
更新: 我也试过
[Test]
public async void CreateNewProject()
{
_story.WithScenario("Create a new Project for Bayer sensor")
.Given(InitParameters)
.When(await FuncExceuted)
.Then(AssertFunction)
.Execute();
}
错误 CS4001:无法等待 'method group'
错误 CS1502:'StoryQ.Condition.When(System.Action)' 的最佳重载方法匹配有一些无效参数
错误 CS1503:参数 1:无法从 'void' 转换为 'System.Action'
更新二:
[测试]
public async Task CreateNewProject()
{
_story.WithScenario("Create a new Project for Bayer sensor")
.Given(InitParameters)
.When(async ()=> await FuncExceuted())
.Then(AssertFunction)
.Execute();
}
编译中!但运行时错误 ArgumentException -> 如果您在方法名称中使用 2 个下划线,请确保有 2 个参数(找到 0 个)
错误抱怨 Given()
,不是任何任务:
error CS1502: The best overloaded method match for 'StoryQ.Scenario.Given(System.Action)' has some invalid arguments
error CS1503: Argument 1: cannot convert from 'void' to 'System.Action'
变化:
.Given(InitParameters())
收件人:
.Given(InitParameters)
或
.Given(() => InitParameters())
Given()
需要一个 Action 委托,或者可以转换为 Action 的东西。当执行测试时,StoryQ 本身将调用该操作。
您输入的内容会立即调用该方法并将结果 (void
) 传递给 Given()
。这就是编译器抱怨无法将 void
转换为 Action
编辑
看起来所有的电话都有同样的问题。全部传递函数调用的 结果 而不是预期的 Action 或 Func.
代码应替换为:
_story.WithScenario("Create a new Project for Bayer sensor")
.Given(()=>InitParameters())
.When(async ()=>await FuncExceuted())
.Then(() => AssertFunction())
.Execute();
FuncExecuted
不是 函数 。这是一种异步方法。使用异步方法的标准命名约定,它应该命名为 ExecutedAsync
.
如果 StoryQ 可以处理异步方法,可以简单地写成:
.When(()=>ExceutedAsync())
还有。使方法异步的不是 async/await
,而是它内部发生的事情和 return 类型的任务。
如果 StoryQ 无法处理异步方法,则可能必须显式等待该方法,例如:
.When(()=>FuncExceuted().Wait())