- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
大家好,我是测试新手,所以请放轻松 :)。我在测试我的 api Controller 时遇到问题。我已经创建了一个单独的类来测试 Controller ,但我遇到了“对象引用未设置为有效实例”的问题
我要测试的 api Controller 和方法:
namespace Project.Controllers.Api
{
[Authorize]
[Route("/api/entries/{date}")]
public class EntryController : Controller
{
private ILogger<EntryController> _logger;
private ITrackerRepository _repository;
public EntryController(ITrackerRepository repository, ILogger<EntryController> logger)
{
_repository = repository;
_logger = logger;
}
[HttpGet("")]
public JsonResult Get(string date)
{
// DateTime date mm/dd/yyyy
DateTime dateTime = Convert.ToDateTime(date);
var result = Mapper.Map<IEnumerable<EntryViewModel>>(_repository.GetDiaryEntries(dateTime, User.Identity.Name));
if (result != null)
{
return Json(result);
}
else
{
return Json(null);
}
}
}
我尝试使用 xunit 进行单元测试:
namespace test.Project.UnitTests
{
public class EntryControllerTest
{
public EntryControllerTest()
{
}
[Fact]
public void TestInvalidViewModels()
{
// Created test mock/empty repository
TestProjectRepository testRepo = new TestProjectRepository();
var controller = new EntryController(testRepo, null);
var result = controller.Get("01/12/1899");
Assert.Equal(result, null);
}
}
}
我在 Controller.cs 文件中遇到“对象引用未设置为对象实例”的问题。非常感谢任何帮助,谢谢。
最佳答案
根据您的代码,此 User.Identity.Name
是您最可能导致错误的原因。
[Fact]
public void TestInvalidViewModels()
{
//Arrange
var username = "username@example.com";
var identity = new GenericIdentity(username, "");
var fakeUser = new GenericPrincipal(identity, roles: new string[] { });
TestProjectRepository testRepo = new TestProjectRepository();
var controller = new EntryController(testRepo, null);
controller.User = fakeUser;
//Act
var result = controller.Get("01/12/1899");
//Assert
Assert.Equal(result, null);
}
关于c# - 单元测试 API Controller (asp.net 5、xunit)时对象未设置为引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846728/
我找不到任何关于我认为是一个相当明显的问题的信息。xunit.console.clr4 命令行 arg 帮助状态: usage: xunit.console.clr4 [options] usage
当我们使用 MSTest 时,我们有几个环境有自己的运行设置。由于 Microsoft 正在放弃 MSTest,我们将转向 xUnit。无论是通过运行设置还是命令行属性,我都需要一种在 xUnit 测
我试图使用 OpenCover(今天下载)来覆盖我的测试。这是我使用的命令行: OpenCover.Console.exe -target:"c:\Programmes2\xunit\xunit.co
我正在学习使用单元测试,我创建了一个项目,添加了 xunit 引用。 以及以下代码: namespace UnitTestProject { public partial class Form
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
我有一个在 Windows 上构建的程序集 我想在 Linux 中的单声道上运行 xUnit 测试。 但是,我发现虽然其中 400 个测试可以(按顺序)运行,但某些测试要么挂起 xUnit 运行程序,
我有一个 F# 类库,其中包含使用 NuGet 安装的“xUnit.net”和“xUnit.net Runners”包。我有以下代码: module XUnitTest open Xunit [] l
I know that this question has been asked multiple times before I raise it again, However I still cou
我们使用的是 dotCover 2.7 和 xUnit.net 1.9.2。 在我的机器 (Windows 7) 和同事的机器 (Windows 8) 上,我们可以从命令行针对我们使用 xUnit.n
是否可以将 xUnit 与 LINQPad 一起使用? 能够首先为在 LINQPad 中设计的概念编写一些测试会很棒。这比添加另一个 ConsoleApp23423894238 更容易,只是为了能够快
我有一组需要共享状态的 xunit.net 测试。希望我希望这些测试能够并行运行。所以我希望运行者这样做: 创建共享夹具 运行并行所有使用该夹具的测试 在阅读 xunit 文档时,它说要在测试类之间共
我需要跳过基于类中某些 bool 条件的测试方法。是否可以?如何实现?我试过扩展 FactAttribute 但我无法获得 Test 类的实例。 我的代码如下: using System; using
我有兴趣在多个类上重用测试理论,特别是一些需要相同测试的构造函数。我最初有使用委托(delegate)来执行此功能的想法。 但是,我认为我可能正在尝试重新发明轮子,尽管 C# 具有一些功能,但我认为我
我正在为我的 DataAccessRepository(使用 Entity Framework )类编写测试用例。此类在构造函数中采用两个参数。 1)连接对象 2) Automapper 对象 现在,
xUnit 相当于 NUnit 的 [TestFixtureSetUp] ? 我们探索发现IUseFixture相当于[TestFixtureSetUp] ,但它没有按预期工作。 正如我们所探索的(在
Xunit 1.9.x 为用户提供了 DynamicSkipExample.cs 帮助他设置动态跳过 [Fact] 的示例。 事实证明,这在执行一些跨平台开发时非常有用。当由于底层上下文(操作系统、文
我正在尝试使用 xUnit.net 作为 SpecFlow 的测试运行器。来自官方下载区的 SpecFlow 1.2 二进制文件不包含 xUnit.net 提供程序,但 GitHub 上的主分支有一个
当我尝试运行我的 xUnit.net 测试时,出现此错误: [xUnit.net 00:00:00.63] xunit.UnitTest1.TestTheAnswer [FAIL] Fai
我已经转移到 xunit.net 2.0 测试版,但需要 AutoFixture 的一些功能,这仍然取决于当前的 1.9.2 稳定版本 (CompositeDataAttribute)。据我所知 Au
我已经使用 NUnit 多年了,我想尝试 XUnit。所以我安装了 XUnit 并运行了允许您通过 TD.net 运行 XUnit 的可执行文件。 我似乎不能一次运行多个测试。使用 NUnit + T
我是一名优秀的程序员,十分优秀!