如果我尝试模拟包含如下async方法的类型:
interface Foo
{
Task<int> Bar();
}
Run Code Online (Sandbox Code Playgroud)
然后mock的Bar方法返回null.我猜Moq正在选择default(Task<int>)我的方法的默认返回值,这确实是null.然而,Moq应该选择像Task.FromResult(default(int))默认值这样的东西.我可以强制Moq使异步方法返回非空任务吗?
这可能吗?
我发现的唯一解决方案通常将方法视为重写,如果Class B可以分配,Class A并且if Method A具有相同的签名Method B.但它并不涵盖所有情况!
例如,我想处理这种情况:
interface Foo<T> {
void doStuff(T arg);
}
class FooImpl implements Foo<String> {
public void doStuff(String args) {
//Is overriden!
}
}
Run Code Online (Sandbox Code Playgroud)
我还想检查Method B实际可见的Method A(包范围等).
您是否曾经历过一种可靠的方法来确定方法是否被覆盖?
谢谢
使用IntelliJ Idea Community Edition进行调试时是否可以编辑一些代码?我在选项中找不到此功能.
我正在使用测试驱动开发方法在C#中编写一个小游戏.我遇到了一个问题:
我有一节课CheckersBoard:
public class CheckersBoard
{
private const string InitialBoardPattern = "B-B-B-B-" +
"-B-B-B-B" +
"B-B-B-B-" +
"--------" +
"--------" +
"-W-W-W-W" +
"W-W-W-W-" +
"-W-W-W-W";
public SquareStatus[,] Squares { get; private set; }
public CheckersBoard(IBoardGenerator boardGenerator)
{
Squares = boardGenerator.GenerateFromPattern(InitialBoardPattern, 8, 8);
}
//....
}
Run Code Online (Sandbox Code Playgroud)
一节课BoardGenerator:
public class BoardGenerator : IBoardGenerator
{
public SquareStatus[,] GenerateFromPattern(string pattern, int width, int height)
{
//....
}
}
Run Code Online (Sandbox Code Playgroud)
BoardGenerator允许我以CheckersBoard一种非常易读的方式初始化.所以,我真的想BoardGenerator在我的单元测试中使用,以避免难看的数组初始化.
但这违反了规则,即我必须保持所有单元测试彼此独立.如果测试GenerateFromPattern失败,那将产生"级联"效果,并且所有使用的测试也GenerateFromPattern将失败. …
我正在使用Hibernate和MySql服务器.我使用多个数据库作为"命名空间"(例如users,transactions,logging等).
所以,我将Hibernate配置为NOT不连接到特定的数据库:
url = jdbc:mysql://127.0.0.1/
表所在的数据库通过以下catalog属性在hbm文件中定义:
<class name="com.myApp.entities.User" table="user" schema="" catalog="users"> ...
Run Code Online (Sandbox Code Playgroud)
当我想加载一些数据时,一切正常,Hibernate似乎生成了预期的SQL查询(通过在表名中使用目录前缀),例如:
select id from users.user
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试添加新记录时,Hibernate不再使用该from [catalog].[table_name]语法.所以我得到MySQL错误'没有选择数据库'.
select max(id) from user
Run Code Online (Sandbox Code Playgroud)
Hibernate正在尝试获取未来的id来创建一个新记录,但它没有指定在哪个数据库中找到该表,它应该是:
select max(id) from users.user
Run Code Online (Sandbox Code Playgroud)
为什么Hibernate生成这个无效的查询?有人遇到过这个问题吗?
当我实现设计模式时,我应该保留"策略","访问者","外观"等术语,还是可以将这些名称与我的应用程序的上下文相匹配?什么是最佳做法?
让我们考虑以下列表:
// 2 2 2 1 1 1
let xs = [2;2;2;1;1;1]
// 2 2 2 1 1 1
let xs' = List.map (fun x -> x) list
// 4 4 4 1 1 1
let xs'' = List.map (fun x -> x * x) list
Run Code Online (Sandbox Code Playgroud)
会List.map在第二种情况下分配一个新列表吗?在第三种情况下,将xs分享尾巴[1;1;1]用xs''?
java ×3
c# ×2
async-await ×1
debugging ×1
f# ×1
hibernate ×1
mocking ×1
moq ×1
mysql ×1
oop ×1
reflection ×1
tdd ×1
unit-testing ×1