小编bra*_*ing的帖子

如何使用XUnit 2.0和FSharp样式测试捕获输出

通常我用F#编写单元测试

open Swensen.Unquote
open Xunit

module MyTests =

    [<Fact>]
    let ``SomeFunction should return 10`` () =
        let a = SomeFunction()
        test <@ a = 10 @>


    [<Fact>]
    let ``SomeOtherFunction should return 11`` () =
        let a = SomeFunction()
        test <@ a = 11 @>
Run Code Online (Sandbox Code Playgroud)

如果我希望从xunit登录到控制台(根据http://xunit.github.io/docs/capturing-output.html),则需要编写一个构造函数,该构造函数接受ITestOutputHelper然后使用它而不是Console.WriteLine和家人.

using Xunit;
using Xunit.Abstractions;

public class MyTestClass
{
    private readonly ITestOutputHelper output;

    public MyTestClass(ITestOutputHelper output)
    {
        this.output = output;
    }

    [Fact]
    public void MyTest()
    {
        var temp = "my class!";
        output.WriteLine("This …
Run Code Online (Sandbox Code Playgroud)

f# xunit

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

C#泛型扩展方法的专业化

我有以下扩展方法MessageBus:

public static class MessageBusMixins
{
    public static IDisposable Subscribe<T>(
        this IObservable<T> observable,
        MessageBus bus)
    where T:class
    {
        ...
    }

    public static IDisposable Subscribe<T>( 
        this IObservable<Maybe<T>> observable,
        MessageBus bus)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

编译好.但是,当我尝试使用它时:

IObservable<Maybe<string>> source = ...;
MessageBus bus = ...;

source.Subscribe(bus);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是两种候选方法都不是最具体的.不过,我认为Maybe<T>不是具体的T或者是不正确的?

编辑

它变得很糟糕,因为如果我明确地调用扩展方法,那么:

MessageBus.SubscribeTo(source, bus);
Run Code Online (Sandbox Code Playgroud)

然后它工作并选择正确的方法.

c# generics extension-methods

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

有没有办法在Resharper中使用注释禁用自定义模式

在Resharper中,可以通过注释禁用正常提示

Disable once with comment
Run Code Online (Sandbox Code Playgroud)

按下时上下文菜单中的选项 <ctrl-enter>

使用自定义结构搜索模式

http://blog.jetbrains.com/dotnet/2010/08/19/highlighting-custom-patterns-with-resharper/

我找不到办法做到这一点.上下文菜单中没有选项可禁用提示.

是否可以禁用带注释的自定义模式?

resharper visual-studio structural-search

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

如何在Rails中的AREL中的子查询上进行连接

我有一个简单的模型

class User
    has_many :logs


class Logs
Run Code Online (Sandbox Code Playgroud)

通过外键logs.user_id以通常的方式相关.我正在尝试使用Arel执行以下操作,并且根据Arel doc它应该可以工作.

u_t = Arel::Table::new :users
l_t = Arel::Table::new :logs

counts = l_t.
    group(l_t[:user_id]).
    project(
        l_t[:user_id].as("user_id"),
        l_t[:user_id].count.as("count_all")
    )

l_t.joins(counts).on(l_t[:id].eq(counts[:user_id]))
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到了错误

TypeError: Cannot visit Arel::SelectManager
Run Code Online (Sandbox Code Playgroud)

然而,Arel的作者明确暗示 Arel可以做这种事情.

请不要写关于如何使用原始sql,另一种类型的Arel查询等实现相同查询的响应.这是我感兴趣的模式,而不是此查询的特定结果.

inner-join arel ruby-on-rails-3.1

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

在调试c#时,Visual Studio 2012中是否有一种方法可以使用F#REPL?

如果我在ac#程序中有断点,我很乐意使用F#REPL来检查我的代码.这有可能吗?

c# debugging f# read-eval-print-loop visual-studio-2012

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

是否可以使用c#"交互式窗口"而不是VS2017中的即时窗口

C#" 交互式 窗口 "比" 即时 窗口 " 功能更全面.是否可以在调试会话期间将调试上下文加载到其中?

c# debugging read-eval-print-loop visual-studio-2017

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

在C++中检查基类的两个实例是否属于同一个子类

以下代码解释了问题.填写same_sub_class以检测到虚拟基类A的两个指针实际上是否是同一个具体类.

struct A {
    ...
}:

struct B : public A {
    ...
}:

struct C : public A {
    ...
}


bool same_sub_class(A * a1, A * a2){
    // Fill this in to return true if a1 and a2 are
    // of the same concrete class
}
Run Code Online (Sandbox Code Playgroud)

编辑:

当我查看我的应用程序时,我需要一些与上面略有不同的东西.我需要能够通过type_id对实例进行分组.

仅供参考.我有一个迷你符号algerbra系统,所以要进行操作,有时需要知道类类型进行排序和重新排列表达式很重要.

所以给出了一个指针向量,用于实例说明如何通过type_id对它们进行分组.我要么需要能够散列type_id,要么为每个类生成一个唯一的整数.

c++ dynamic-cast

9
推荐指数
2
解决办法
6524
查看次数

在JQuery移动UI中禁用散列更改控制器并替换为backbone.js

我正在使用JQuery Mobile UI,widgit工具包很不错.但是我也在使用backbone.js,它带有一个非常整洁的hashchange控制器框架.问题是JQuery Mobile UI有一个内置的糟糕的哈希变更控制器,假设你总是希望对每个哈希变化进行AJAX查询并从服务器加载内容.

从JQuery Mobile UI中拔出小部件框架是否有任何成功?

model-view-controller mobile jquery hashchange backbone.js

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

如何从coffeescript中的回调中调用"super"

class Foo
    a: ->
        x.call =>
            super
Run Code Online (Sandbox Code Playgroud)

不会编译,因为我不能从匿名类调用super.但是我的意图是将超类方法称为'a'.这是coffeescript中缺少的功能吗?

请注意,我将代码更改为

class Foo
    a: ->
        x.call =>
                return Foo.__super__.a.apply(this, arguments)
Run Code Online (Sandbox Code Playgroud)

让它工作,但这不是coffeescript正确!

super coffeescript

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

Nuget似乎安装了错误版本的System.Collections.Immutable

我和Nuget有一个令人困惑的问题.我有很多项目声称在1.3.0版本上安装了System.Collections.Immutable 但是如果我在所有引用中看到dll的版本,我看到版本1.2.1.0

当我用JustDecompile打开DLL时,我看到了 在此输入图像描述 它声明DLL版本确实是1.2.1.0但已安装在目录包\ System.Collections.Immutable.1.3.0中

典型的packages.config文件将包含

<package id="System.Collections.Immutable" version="1.3.0" targetFramework="net452" />
Run Code Online (Sandbox Code Playgroud)

和csproj是

<Reference 
  Include="System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
     <HintPath>$(SolutionDir)packages\System.Collections.Immutable.1.3.0\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
  <Private>True</Private>
</Reference>
Run Code Online (Sandbox Code Playgroud)

如果我尝试从库中打开下载的nuget包并使用nuget package explorer打开,我会得到

在此输入图像描述

c# nuget immutable-collections

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