小编Pat*_*irk的帖子

nUnit中的ExpectedException给了我一个错误

我刚接触.NET Framework上的测试工具,所以我在ReSharper的帮助下从NuGet下载了它.

我正在使用此快速入门来学习如何使用nUnit.我刚刚复制了代码,这个属性出现错误:

[ExpectedException(typeof(InsufficientFundsException))] //it is user defined Exception 
Run Code Online (Sandbox Code Playgroud)

错误是:

找不到类型或命名空间名称'ExpectedException'(您是否缺少using指令或程序集引用?)

为什么?如果我需要这样的功能,我应该用它替换它?

.net c# testing nunit unit-testing

38
推荐指数
3
解决办法
2万
查看次数

我如何模拟User.Identity.GetUserId()?

我正在尝试对我的代码进行单元测试,其中包括以下行:

UserLoginInfo userIdentity = UserManager.GetLogins(User.Identity.GetUserId()).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

因为我无法得到,我只是被困在一点上:

User.Identity.GetUserId()
Run Code Online (Sandbox Code Playgroud)

返回一个值.我一直在设置控制器时尝试以下操作:

var mock = new Mock<ControllerContext>();
mock.Setup(p => p.HttpContext.User.Identity.GetUserId()).Returns("string");
Run Code Online (Sandbox Code Playgroud)

但是它给出了"NotSupportedException未被用户代码处理"的错误.我也尝试过以下方法:

ControllerContext controllerContext = new ControllerContext();

string username = "username";
string userid = Guid.NewGuid().ToString("N"); //could be a constant

List<Claim> claims = new List<Claim>{
    new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", username), 
    new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", userid)
};
var genericIdentity = new GenericIdentity("Andrew");
genericIdentity.AddClaims(claims);
var genericPrincipal = new GenericPrincipal(genericIdentity, new string[] { });
controllerContext.HttpContext.User = genericPrincipal;
Run Code Online (Sandbox Code Playgroud)

基于我在stackoverflow上找到的一些代码,但这会返回相同的错误"NotSupportedException未被用户代码处理".

任何有关我如何进行的帮助将不胜感激.谢谢.

.net c# unit-testing moq asp.net-mvc-5

30
推荐指数
3
解决办法
2万
查看次数

在SQLite和Dapper中映射TimeSpan

我正在尝试使用Dapper连接到现有的数据库格式,该格式具有在BIGINT列中编码为刻度的持续时间的表.TimeSpan在插入和读取数据库时,如何告诉Dapper将我的POCO的-typed属性映射到滴答?

我试着设置类型映射TimeSpanDbType.Int64:

SqlMapper.AddTypeMap(typeof(TimeSpan), DbType.Int64);
Run Code Online (Sandbox Code Playgroud)

我也创建了一个ITypeHandler,但SetValue从未调用过该方法:

public class TimeSpanToTicksHandler : SqlMapper.TypeHandler<TimeSpan>
{
    public override TimeSpan Parse(object value)
    {
        return new TimeSpan((long)value);
    }

    public override void SetValue(IDbDataParameter parameter, TimeSpan value)
    {
        parameter.Value = value.Ticks;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的POCO:

public class Task
{
    public TimeSpan Duration { get; set; }

    // etc.
}
Run Code Online (Sandbox Code Playgroud)

执行这样的简单插入语句时:

string sql = "INSERT INTO Tasks (Duration) values (@Duration);";
Run Code Online (Sandbox Code Playgroud)

并将POCO作为要插入的对象传递:

Task task = new Task { Duration = TimeSpan.FromSeconds(20) }; …
Run Code Online (Sandbox Code Playgroud)

c# sqlite orm system.data.sqlite dapper

9
推荐指数
1
解决办法
2557
查看次数

利用属性版本控制在Swagger中利用MultipleApiVersions

使用属性路由时,是否可以在Swagger UI/Swashbuckle中利用MultipleApiVersions?

具体来说,我实现了版本控制:

using System.Web.Http;

namespace RESTServices.Controllers.v1
{
    [Route("api/v1/Test")]
    public class TestV1Controller : ApiController
    { ... }
Run Code Online (Sandbox Code Playgroud)

版本2将位于v2名称空间中.在名为TestV2Controller的控制器中.路线中有v2.

是否可以传递一个lambda,这将允许这个?我在网上发现了一个编译的lambda样本,但随后Swagger完全停止了工作.无法在浏览器中点击断点或看到Swagger.

attributes swagger swagger-ui asp.net-web-api2 swashbuckle

9
推荐指数
1
解决办法
6788
查看次数

Nunit Framework与SpecFlow框架

我是NUnit的新手,并且与SpecFlow测试框架和NUnit测试框架相混淆.

现有项目使用NUnit,如下所示.具有[Test]属性的所有方法都显示在NUnit GUI中(如果从方法中删除[Test],则测试用例不会显示在NUnit GUI中):

[TestFixture]
public class AccountTest
{
  [Test]
  public void TransferFunds()
  {
    Account source = new Account();
    source.Deposit(200m);
  }

  [Test]
  public void TransferWithInsufficientFunds()
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在同一个项目中使用SpecFlow进行编码时,SpecFlow框架是不同的,从[Given],[When],[Then]开始.每个SpecFlow场景都显示在Nunit GUI上.

我正在做的是用一个SpecFlow方法替换每个[Test]方法.例如:

[Test]
public void TransferFunds()
{
  Account source = new Account();
  source.Deposit(200m);
}
Run Code Online (Sandbox Code Playgroud)

转向

[Then(@"I Transfer Funds")]
public void ITransferFunds()
{
  Account source = new Account();
  source.Deposit(200m);
}
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

  1. 看起来SpecFlow无法识别NUnit属性[Test]或[Setup].要使用SpecFlow完成项目,我是否需要摆脱所有NUnit框架并替换为SpecFlow的框架?

  2. 我可以看到有很多文章在讨论"SpecFlow + NUnit",但它们要么是SpecFlow [Given],[When],[Then]还是NUnit [Test],[TestCase].如何在一个项目中工作或者我对NUnit的理解是完全错误的?

我的问题可能是非常入门级的,谢谢你的答案!

c# nunit specflow

8
推荐指数
2
解决办法
8403
查看次数

如何更新SVN中的单个文件

我想签出并签入一个文件.我尝试了下面的命令,但它不起作用:

svn checkout <url_of_big_dir> <target> --depth empty
Run Code Online (Sandbox Code Playgroud)

当我尝试下面的命令它工作.

svn export <url_of_big_dir> <target>
Run Code Online (Sandbox Code Playgroud)

但是我在一些文档中读到,当您要求更新文件时,使用Export是不合适的.

如何更新单个文件?

svn

7
推荐指数
1
解决办法
1万
查看次数

在没有对象属性的Fluent NHibernate中映射外键

我的问题是,对于父对象和子对象是否有可能的Fluent NHibernate映射,它不需要Child对象具有Parent对象属性?我还没弄明白如何将引用映射回Parent.当我使用映射调用Create时,我得到一个异常,因为Child对象没有所需的外键(在数据存储中需要)回到Parent.

我有两个POCO课程:

public class Parent
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual IList<Child> Childs { get; set; }
}

public class Child
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual int ParentId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

还有一些映射:

public class ParentMap : ClassMap<Parent>
{
    public ParentMap()
    {
        this.Table("Parents");
        this.Id(x => x.Id);
        this.Map(x => x.Name);
        this.HasMany(x => …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate nhibernate-mapping fluent-nhibernate

6
推荐指数
1
解决办法
1918
查看次数

返回只读并发列表

我想知道,假设我有一个 ConcurrentBag 封装在这样的对象中

class Package
{
   private ConcurrentBag<string> myList;
   public string title {get; private set;}
   public string description {get; private set;}

   public Package(string title,string description)
   {
       myList = new ConcurrentBag<string>();
       this.title = title;
       this.description = description;
   }


   public override string ToString()
   {
       return title + " " + description;
   }
}
Run Code Online (Sandbox Code Playgroud)

我将如何返回我的 ConcurrentBag 的只读版本?

.net c#

5
推荐指数
1
解决办法
1047
查看次数

在Visual Studio中更改asp.net项目的输出目录

我是asp.net的新手(但不是c#),我正在尝试将输出目录从\ bin移动到..\Build\debug.我已在构建属性中完成此操作,并且构建正常并将其放入正确的输出目录中.但是,当我尝试运行该应用程序时,我收到以下错误:

'/'应用程序中的服务器错误.

分析器错误

说明:解析为此请求提供服务所需的资源时发生错误.请查看以下特定的解析错误详细信息并相应地修改源文件.

分析器错误消息:无法加载类型"MyApp.Backend.WebApiApplication".

来源错误:

第1行:<%@ Application Codebehind ="Global.asax.cs"Inherits ="MyApp.Backend.WebApiApplication"Language ="C#"%>

源文件:/global.asax行:1

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.18045.

它与Visual Studio托管网站的方式有关吗?任何帮助,将不胜感激.

asp.net visual-studio-2012

5
推荐指数
1
解决办法
2618
查看次数

MVVM Light 和 set 数据模型字段

下面是使用 MVVM LightSet方法的基本模式:

public class MyViewModel : ViewModelBase
{
    private string _text;
    public Text 
    {
        get{ return _text; }
        set{ Set(()=>Text, ref _text, value); }
    }        
}
Run Code Online (Sandbox Code Playgroud)

但是在我的项目中,我将字段保留在 DataModel 类中,这对于克隆数据和复制取消修改非常有用:

public class MyDataModel
{
    public string Text;
}

public class MyViewModel : ViewModelBase
{
    private MyDataModel data;
    public Text 
    {
        get{ return data.Text; }
        set{ data.Text = value; RaisePropertyChanged(()=>Text); } 
    }        
}
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下我不能使用该Set方法,因为它的第二个参数是ref并且我不能data.Text用作ref参数。

Set( ()=>Text, ref data.Text, value ); // …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm mvvm-light

5
推荐指数
1
解决办法
2950
查看次数