我的xunit测试失败了,因为在进行单元测试时,数据库没有更新期望的Id。如何模拟数据库创建的id/主键? [HttpPost]
public async Task<ActionResult<AccountReadDto>> CreateAccountAsync(AccountCreateDto createAccountDto)
{
var account = _mapper.Map<Account>(createAccountDto); // Id is int equal to 0
await _accountRepo.CreateA
为调用异步方法的同步方法编写单元测试的正确方法是什么?现在我的单元测试正在通过,但是当我试图打开页面时,它再也没有返回。为什么我的单元测试没有失败?我怎么才能让它失败呢?
我用下面这段简单的代码重复了我的问题:
我通过的测试:
[TestMethod]
public void DoSomeWork_WhenWeDoSomeWork_ShouldReturnDone()
{
var service = new SyncService();
const string expected = "Done";
var actual
我正在处理一个从API端点获取数据的Web项目。API层位于服务层的顶部,存储层位于底层。我为服务层和API层编写了单元测试。我正在使用Moq框架来模拟依赖关系。现在我想测试MVC控制器。我使用从HttpClient派生的请求管理器类从API端点获取数据。那我该怎么测试这个控制器。我已经编写了一个单元测试,但是测试是直接从我的数据库获取数据。
public class UserController : Controller
{
private RequestManager requestManager = new RequestManager();
// GET: User
在节目中,我们有:
var task1 = some task;
task1.start()
如果模拟任务导致单元测试,则在调用start()之前,模拟机制将返回结果,并引发“在已完成的任务上不能调用开始”异常。
如何解决这个问题并组成一个有效的单元测试?
为了清晰起见,在这里粘贴一个简化的示例代码,这将产生上述异常:
namespace TestTaskStart
{
public class TestMethods : ITestMethods
{
public async Task<int> AlwaysReturnOne(int number
这就是我想要伪装的方法:
Function ReturnPasswordHistoryAsync(passwordChangeHistory As PasswordChangeHistory) As Task(Of IList(Of PasswordChangeHistory))
这是我的单元测试:
<TestMethod()> Public Async Function ValidateNewPassword_NewPasswordHasAlreadyBeenUsed_PasswordIsNotValid() As Task
'Arrange
我正在尝试研究mvc4中的实体框架。我在EF中创建了一个带有CRUD操作的项目。现在我想对此进行单元测试(主要是依赖注入)。我在谷歌上搜索了很多网站,并尝试了模拟测试方法,
http://www.codeproject.com/Articles/447988/How-to-Mock-Test-an-Entity-Framework-Model-First-P
但它并没有起作用。实际上,对EF进行单元测试的最好方法是什么?创建用于测试的类或创建测试项目。这是我的crud操作代码,我如何对其进行单元测试,请帮帮我。
Member.cs
public class Member
{
[Key]
假设我有一个控制器操作不能被异步化(由于各种原因),但是我有一个服务(通过几种方法)使用HttpClient调用rest服务。使用异步客户端和使用.Wait或.Result有什么好处吗?还是说使用同步方法会降低性能呢?
因此,要么是:
//MyController.cs
public ActionResult GetSomething(int id)
{
//lots of stuff here
var processedResponse = _myService.Get(id);
//lots more stuff here
return new Conten
我有一个.NET Core2.2WebAPI,其中我希望控制器异步返回结果。在一路走异步的过程中,调用浏览器来测试get by id和get all工作。
控制器单元测试也可以工作,但是当我创建涉及模拟上下文的服务级别单元测试时,我遇到了错误。
System.AggregateException : One or more errors occurred. (The provider for the source IQueryable doesn't implement IAsyncQueryProvider. Only providers that implement IAsyncQ
正如问题所述,我想知道如何创建内联异步任务。我尝试了以下方法(当然,这里的T是一个通用抽象,您应该用您想要的任何对象替换它):
var task = new Task<T>(() => new T());
var taskResult = await task;
然而,当taskResult行被执行时,程序就会冻结--很可能是因为任务不是异步的。我知道我可以创建一个异步方法并对此进行等待,但是由于我正在开发单元测试,所以我更喜欢将任务定义内联。
那么,我的问题是:为了编写一个不冻结程序的可接受的内联任务,我会怎么做?
编辑:背景是我使用的是Moq,需要模拟一些async Ta
我试图为默认的MVC应用程序编写单元测试。由于这个应用程序使用EntityFramework,我怀疑我需要修改应用程序以使用模拟存储库(这是人们所说的“注入”的意思吗?)
因此,基于生成的MVC应用程序代码,我需要为UserManager和UserStore创建一个模拟存储库吗?
[Authorize]
public class AccountController : Controller
{
public AccountController()
: this(new UserManager<ApplicationUser>(new UserStore<
我正在尝试通过模拟来编写单元测试。我的测试是模拟使用FirstOrDefaultAsync方法的GetAll方法。如果我将FirstOrDefaultAsync更改为FirstOrDefault,我的测试可以正常工作,但当我放回FirstOrDefaultAsync时,它总是失败。
我的单元测试代码如下
[TestMethod]
public async Task GetAsync_WithUser_ReturnsOk()
{
var data = GetUserResult();
var mockContext = Substitute.For<IPostAnythi
我有一个应用在.net核心3.1与角前端。我希望将装饰器用于基本控制器,以便在整个应用程序中记录CUD操作。我在这个项目中使用Scrutor软件包。
基本控制器如下
using System.Collections.Generic;
using System.Threading.Tasks;
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Xenagos.Data;
using Xenagos.Data.EFCore;
using Xenagos.Vi
我有一个单元测试,它期待一个异常作为返回参数。
如果我通过调试器运行代码,并检查各种元素,它就能工作。如果我只做了所有的测试,就不会了。
这个问题与方法是异步的这一事实有关,就好像我删除了各种异步元素一样。(我想这是时间问题)
我的单元测试是;
[TestMethod]
[ExpectedException(typeof(System.AggregateException))]
public void Service_GetDoc_ThrowsExceptionIfNull()
{
var nullRepository = new Mock<CCLDoma
我有一个MVC5项目,它在类库项目中使用服务和存储库。当我将以下代码作为MVC项目运行/调试时,执行挂在存储库中的“返回等待client.GetAsync(url);”处。不抛出任何例外。
如果我从单元测试或控制台应用程序调用相同的服务代码和存储库代码,那么代码可以正常工作。
代码有什么问题,或者我做错了什么?
//档案: TestController.cs
public ActionResult Index(string q)
{
//Code
var mySvc = new MyService();
var svcResponse = mySvc.GetAsync
在控制器内部,我有一个视图,它将简单的对象返回给视图。
public ActionResult SomeAction(int?id)
{
MyModel model = new MyModel();
return View(model);
}
如何对这个控制器进行单元测试以检查ViewResult,基本上
检查视图是否已初始化?基本上,我如何在单元测试中模拟这个MyModel?
[Test]
public void Can_Open_SomeAction()
{
// controller is already set inside
我的目标是在OData v4控制器中对PUT操作进行单元测试。
我正在为实体框架6上下文和NBuilder使用MOQ来构建测试数据。
我能够成功地测试Get和Get(Id),但是当我从PUT操作中检索HTTPActionResult时,我无法运行断言。
我可以看到HTTPActionResult在调试模式下返回带有实体属性的UpdatedODataResult对象,但我看不到在设计时使用它的方法。
有人知道如何从异步PUT操作响应中提取返回的实体吗?
以下是代码:
using Models;
using WebApp.DAL;
using System.Data.Entity.Infrastr
这两种操作方法有什么不同?
public ActionResult Index()
{
var task = new ServiceClient().GetProductsAsync();
return View(task.Result);
}
public async Task<ActionResult> Index()
{
var task = new ServiceClient().GetProductsAsync();
return View(await task);
}
我正在试验提高ASP.NET应用程序性能的方法。我要考虑的事情之一是使用并行性和使操作异步化来减少处理时间和提高吞吐量。我首先模拟一些我们经常做的事情,发出多个数据库检索来呈现一个页面。
public ActionResult Index()
{
var dal = new Dal();
var cases = new List<Case>();
cases.AddRange( dal.GetAssignedCases() );
cases.AddRange( dal.GetNewCases() );
return View( "Ca
我对异步的使用并不熟悉,这似乎让我不知道原因或问题是什么,当我试图加载网页时,异步调用似乎挂起,页面从未加载。我的实现是错的吗?
控制器
public ActionResult Index()
{
var model = _partyAddOnService.Get().Result.Select(x => new AddOnModel()
{
Id = x.Id,
AddOnType = x.AddOnType,
Description = x.Description,
Name = x.Name,