通常我用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) 我有以下扩展方法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)
然后它工作并选择正确的方法.
在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/
我找不到办法做到这一点.上下文菜单中没有选项可禁用提示.
是否可以禁用带注释的自定义模式?
我有一个简单的模型
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查询等实现相同查询的响应.这是我感兴趣的模式,而不是此查询的特定结果.
如果我在ac#程序中有断点,我很乐意使用F#REPL来检查我的代码.这有可能吗?
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,要么为每个类生成一个唯一的整数.
我正在使用JQuery Mobile UI,widgit工具包很不错.但是我也在使用backbone.js,它带有一个非常整洁的hashchange控制器框架.问题是JQuery Mobile UI有一个内置的糟糕的哈希变更控制器,假设你总是希望对每个哈希变化进行AJAX查询并从服务器加载内容.
从JQuery Mobile UI中拔出小部件框架是否有任何成功?
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正确!
我和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# ×4
debugging ×2
f# ×2
arel ×1
backbone.js ×1
c++ ×1
coffeescript ×1
dynamic-cast ×1
generics ×1
hashchange ×1
inner-join ×1
jquery ×1
mobile ×1
nuget ×1
resharper ×1
super ×1
xunit ×1