小编Ale*_*lex的帖子

基于对象参数的模拟方法返回

我有以下(简化)代码:

public string methodName(ClassType object)
{
    If(object.value == 1)
        return "Yes";
    else If(object.value == 2)
        return "No";
    else
        return "whatever";
}
Run Code Online (Sandbox Code Playgroud)

然后我在单元测试中调用这个方法,并且需要根据对象值模拟返回类型:

_Service.Setup(x => x.methodName(new methodName { value = 1}).Returns("Yes");
_Service.Setup(x => x.methodName(new methodName { value = 2}).Returns("No");
Run Code Online (Sandbox Code Playgroud)

我知道我写的东西是错误的——但我怎样才能做到这一点?

c# unit-testing moq

4
推荐指数
1
解决办法
2121
查看次数

通用字典检索值

我有以下C#类:

class BatchData
{
    public string batchNumber { get; set; }
    public string processDate { get; set; }
    public int TotalRecords { get; set; }
    public int SuccessCount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和字典:

Dictionary<int, BatchData> BatchData = new Dictionary<int, BatchData>();
Run Code Online (Sandbox Code Playgroud)

现在,我想搜索整个字典,看看是否值

x
Run Code Online (Sandbox Code Playgroud)

举行:

BatchData.batchNumber 
Run Code Online (Sandbox Code Playgroud)

例如

对于整本字典,如果

BatchData.batchNumber = x
Run Code Online (Sandbox Code Playgroud)

我知道词典有一种方法

.contains
Run Code Online (Sandbox Code Playgroud)

但我不知道如何应用这个.

编辑:

BatchData.batchNumber = x
Run Code Online (Sandbox Code Playgroud)

可以在字典中多次出现

.net c# dictionary

3
推荐指数
1
解决办法
96
查看次数

当父项可拖动时,防止拖动子元素

我有以下HTML(反应)设置:

<div 
    onDragStart={
    (e) => { this.bound_handleDragStart.call(this, e) }}        
    draggable="true"
>
   <div>Stuff here</div>
   <div><input .../></div>
</div>
Run Code Online (Sandbox Code Playgroud)

此设置使整个外部div可拖动.

但是,如果在输入上开始拖动,我希望它被取消.

我已经尝试将onDragStart添加到输入中,将eventListener添加到输入并返回false,禁止在句柄拖动开始时传播,以及许多其他事情,但它们都不起作用.

作为一个不,当event.target返回外部div时,所以我无法找到一种方法来确定哪个孩子开始拖动.

我相信这可以做到并且不能太难?

我已经考虑过将拖动移动到所有内部div,但我不确定这是否能解决我的问题,或者创建一组全新的问题,而且我觉得这不是正确的方法

html javascript events drag reactjs

3
推荐指数
1
解决办法
1586
查看次数

无法将 lambda 表达式转换为 int 类型,因为它不是委托类型

谁能告诉我以下内容有什么问题以及如何解决它:

        //filterItem.Value is a string array - It is being conerted into an int array
        var intFilters = Array.ConvertAll(filterItem.Value, s => int.Parse(s));

        //Returns an IQueryable<int> for all items in this context that are also in intFilters
        var ids = Context.table1.Where(a => intFilters.Any(y => y == a.domId)).Select(x => x.domId);

        //query is an IQueryable
        query = query.Where(x => specUnidsNullable.Contains(y => y == x.Id));
Run Code Online (Sandbox Code Playgroud)

query上述的目的是仅获取也包含在中的记录ids

我收到以下错误:

Cannot convert lambda expression to type int because it is not a delegate type
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个: …

c# linq lambda

3
推荐指数
1
解决办法
6889
查看次数

在C#中模拟StreamReader以进行单元测试

我有这种格式的代码:

public void parseFile(string filePath)
{
    using (var reader = new StreamReader(@filePath))
    {
        //Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想对代码进行单元测试,但不希望单元测试实际访问文件系统,因为如果实际文件不存在,这会使它们不可靠。

为了防止streamreader访问文件系统,我需要对其进行模拟。我的理解是,我只能模拟实现接口的类。

因此,我可以看到的一个解决方案是为制作包装类和接口Streamreader,然后可以对其进行模拟。

我的问题分为两个部分:

  1. 这是解决此问题的唯一方法吗?

  2. 为了方便进行单元测试,在项目中添加一个额外的层是否正确?如果我在全球范围内遵循这一原则,我会增加很多额外的课程吗?

c# unit-testing moq

3
推荐指数
1
解决办法
685
查看次数

实体框架向所有查询添加where子句

我有一个使用实体框架和 AspNet Identity 的项目。

IdentityUser 的参数之一是停用字段。

在应用程序中,如果我想获得用户,我会这样做:

var users = Context.Users //etc....
Run Code Online (Sandbox Code Playgroud)

但是,我不希望此查询返回任何已停用的用户。我知道我可以做到这一点

var users = Context.Users.Where(x => x.Deactivated != true);
Run Code Online (Sandbox Code Playgroud)

然而,我不愿意这样做,因为我确信有一天有人会忘记添加这个 where 子句。

有没有办法让实体对所有上下文查询自动执行此操作?我发现了这个:

https://learn.microsoft.com/en-us/ef/core/querying/filters

但我没有 EF core,无法升级到它。

我知道我可以制作一个包装函数并调用它,但我正在尝试找到更好的解决方案......

c# linq entity-framework

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

CSS 强制在内容文本之间换行

我有以下 CSS:

header h1:after {
    content:"Alumni Association";
}
Run Code Online (Sandbox Code Playgroud)

我希望它显示如下:

校友

协会

我试过\a, \n, <br>等,但没有一个工作。

我正在寻找一个纯粹的 CSS 解决方案,因为这是我可以访问的所有内容...

css

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

C#速记这有什么问题?

给出这个问题的简写如果陈述:C#

这有什么问题?

    int userID;
    Int32.TryParse(request.userID, out userID);

    userID > 0 ? user = DuoUser.LoadUser(userID): ;
Run Code Online (Sandbox Code Playgroud)

它给出了错误:

only assignment call increment decrement and new object expressions can be used as a statement
Run Code Online (Sandbox Code Playgroud)

据我所知它应该工作,但有些问题?

编辑:

我也尝试过:

    int userID = 0;

    userID > 0 ? user = DuoUser.LoadUser(userID): null;
Run Code Online (Sandbox Code Playgroud)

但它仍然给出了同样的错误.

c#

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

如果记录不存在,SQL Server 在 join where 子句上添加默认值

我有以下 SQL Server 表设置

table1.Id
table1.Name

table2.Id
table2.Type
Run Code Online (Sandbox Code Playgroud)

table1和之间存在一对多关系,例如,在链接到 中的单个记录table2时可以有许多记录。table2table1

我现在有以下数据集:

table1  
Id  Name
1   Name1
2   Name2

table2  
Id  Type
1   1
1   2
2   1
Run Code Online (Sandbox Code Playgroud)

我现在运行以下查询:

SELECT *
FROM table1 t
LEFT JOIN table2 l
ON t.Id = l.Id
WHERE l.Type = 2
Run Code Online (Sandbox Code Playgroud)

该查询将返回以下内容:

table1      table2  
Id  Name    Id  Type
1   Name1   1   2
Run Code Online (Sandbox Code Playgroud)

我实际上想要实现的是一个将返回以下内容的查询:

table1      table2  
Id  Name    Id  Type
1   Name1   1   2
2   Name2   1   DEFAULTVALUE
Run Code Online (Sandbox Code Playgroud)

我在其中声明默认值。

我知道如果删除该WHERE子句,查询将返回 …

sql-server join case

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

使用类型T的成员创建类的实例,而不指定T类型

我有一类这种结构:

public class ClassName<T>
{
    public int Id {get;set;}
    public List<T> ObjectList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

一个集合ClassName位于ParentClass

public ParentClass
{
    public List<ClassName<T>> Property {Get;set;}
    //Other properties...
}
Run Code Online (Sandbox Code Playgroud)

要创建此类的实例,我将执行以下操作:

var item = new ClassName<string>();
Run Code Online (Sandbox Code Playgroud)

是否可以在不指定类型的情况下创建此类的实例T

我试过了

var item = new ClassName<null>();
var item = new ClassName();
Run Code Online (Sandbox Code Playgroud)

但显然这些不起作用....

c# generics

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