小编Mat*_*ter的帖子

我如何用更新的版本自动替换/拒绝待处理的版本?

我有一个管道,可以自动构建代码并将其部署到我的登台环境。对于我的生产环境,我有一个部署前手动审批门,这样只有经过一些审查的版本才会发给客户。到现在为止还挺好。

问题是,随着新版本进入临时环境,现在排队等待手动批准的版本列表越来越多。为了发布最新版本,我需要手动拒绝每个中间版本。这已成为一个费力的过程。

每次新版本进入登台时,我想自动拒绝前一个版本的生产部署。

我查看了 MS 文档、SO、管道设置、可用的管道发布任务,但找不到执行此操作的方法。

发布历史记录显示排队等待批准的旧版本:

发布历史记录显示排队等待批准的旧版本

azure-devops

8
推荐指数
1
解决办法
2269
查看次数

单元测试中的 ActionResult 问题无法在 POST 返回值上 Assert.Equal (asp.net core mvc web api)

我是测试 .net core Web API 的新手,并且正在努力测试 API 上的 POST 方法。我可以断言返回的 ActionResult 的类型,但我似乎无法弄清楚如何将结果与我正在创建的固定装置进行比较。

我已经调试了单元测试,发现 CreatedAtAction 调用返回了一个 ActionResult。顶层值为空。但是,结果的值有该项目。

我觉得我错过了演员表或其他东西,我的代码应该期待 CreatedAtActionResult 或其他东西,但我似乎不知道如何让它工作。

这是我的控制器的 (POST) 方法:

        [HttpPost]
        public async Task<ActionResult<TodoItem>> AddTodoItem(TodoItem item)
        {
            _context.TodoItems.Add(item);
            await _context.SaveChangesAsync();

            return CreatedAtAction(nameof(GetTodoItem), new { id = item.Id }, item);
        }
Run Code Online (Sandbox Code Playgroud)

这是我的单元测试:

        [Fact]
        public async Task PostTodoItem_ShouldPass()
        {
            var fixture = new Fixture();
            var item = fixture.Create<TodoItem>();
            var result = await _controller.AddTodoItem(item);
            Assert.IsType<ActionResult<TodoItem>>(result); // WORKS
            Assert.Equal(item, result.Value); // DOESN'T WORK!!
        }
Run Code Online (Sandbox Code Playgroud)

我正在使用 Autofixture 和 EF 内存数据库进行测试。所有这些都是在单元测试之前运行的共享数据库固定装置类中设置的。

这是我的调试器输出。

调试器输出

c# xunit asp.net-web-api .net-core

2
推荐指数
1
解决办法
6264
查看次数

标签 统计

.net-core ×1

asp.net-web-api ×1

azure-devops ×1

c# ×1

xunit ×1