小编Tim*_*Tim的帖子

没有参数的Moq回调

我正在尝试使用Moq模拟以下方法签名的回调:

ResponseHeader AddIncentives(
        Hs_transRow[] data,
        out ResponseBody responseBody);
Run Code Online (Sandbox Code Playgroud)

我希望我的回调使用传入的数据。但是,我遇到的问题是因为第二个参数是out参数。我可以毫无问题地设置和返回数据,但是回调是一个问题。

这是我当前的设置:

var addIncentiveResponseBody = new ResponseBody();

mockCoinsService
.Setup(service => service.AddIncentives(It.IsAny<Hs_transRow[]>(), out addIncentiveResponseBody))
.Callback((Hs_transRow[] data, ResponseBody body) =>
{
    //I want to use the data variable here
})
.Returns(() => new ResponseHeader
{
     action = ResponseHeaderAction.RESPONSE,
});
Run Code Online (Sandbox Code Playgroud)

当我在单元测试中运行以下代码时,出现错误:

无效的回调。在具有参数(Hs_transRow [],ResponseBody&)的方法上进行的设置无法调用具有参数(Hs_transRow [],ResponseBody)的回调。

我可以看到&符之间的差异,我认为这是因为该参数应该是out参数。但是,如果将out关键字添加到回调中(并在回调中为其分配值),则会收到生成时间错误:

代表“动作”不带两个参数。

Moq是否无法处理具有out参数的方法的回调,还是我做错了什么?

[编辑]毫无疑问,我不是在问如何设置out参数的值。这行已经完成了:

var addIncentiveResponseBody = new ResponseBody();
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq callback out

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

Typescript mixins:如何访问混合类之间的属性?

我试图从官方 TS 文档中理解混音。

https://www.typescriptlang.org/docs/handbook/mixins.html

我在这里设立了一个游乐场。

我的问题是:我如何定义jump和duck来操作Sprite中定义的x和y属性?

即在这个例子中,我希望使用jump()和duck()来操作Sprite类中的x和y。那可能吗?将 x 和 y 属性添加到可跳和可鸭子中似乎很麻烦且重复。

一般来说,如果没有混合类之间属性的交叉操作,我很难看到 TS mixin 的真实用例。

代码是:

(() => {
  // This can live anywhere in your codebase:
  function applyMixins(derivedCtor: any, constructors: any[]) {
    constructors.forEach((baseCtor) => {
      Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {
        Object.defineProperty(
          derivedCtor.prototype,
          name,
          Object.getOwnPropertyDescriptor(baseCtor.prototype, name) ||
            Object.create(null)
        );
      });
    });
  }

  // Each mixin is a traditional ES class
  class Jumpable {
    jump() {
      console.log("jump");
    }
  }

  class Duckable {
    duck() {
      console.log("duck");
    }
  }

  // Including the base
  class …
Run Code Online (Sandbox Code Playgroud)

mixins typescript

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

在 NET 6 中部署后我可以在哪里找到我的页面 cshtml

我正在使用 NET 6 在 asp.net mvc 中开发一个网站,当我部署时,我找不到 cshtml 页面,而是找到很多文件夹、dll 和 .exe。

问题是,每次修改一个页面时,我都需要更新所有网站。

有没有办法只将修改后的页面cshtml上线而不部署整个网站?

web-deployment asp.net-core-mvc .net-6.0

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

ConcatMap 在一个 observable 出现错误时中断

我有以下代码:

Observable.from(modifiedNodes)
    .concatMap(node => {
        return this.Model.setData(node);
    })
    .subscribe(() => {
        NodeSaved++;
    }
Run Code Online (Sandbox Code Playgroud)

如果setData为任何中间节点抛出错误,则不会恢复下一个节点序列。我们如何修改它,以便即使一个节点出现错误,也将执行下一个节点序列?我读过,onErrorResumeNext但我不知道如何在这里使用它。

方法签名setData如下:

public setData(node: INode): Observable<Object>{}
Run Code Online (Sandbox Code Playgroud)

observable rxjs concatmap

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

如果在特定文件夹中,Angular CLI 生成的测试将失败

我使用 angular CLI (v6.1.4) 通过运行在我的 components 文件夹中生成了一个组件,ng g c components/foo然后运行ng test. 新组件的测试失败并出现以下错误:

async() 测试助手需要区域但找不到。请确保您的环境包括 zone.js/dist/zone.js 抛出

错误:非法状态:无法加载指令 FooComponent 的摘要。

奇怪的是,如果我运行ng g c foo(即它不在 components 文件夹中生成),则测试通过。我的测试都适用于其他文件夹,但这是我的 components 文件夹中的第一个测试(也是一个组件的第一个测试)。其他测试都不是异步的。

我是新手,ng test所以我可能会遗漏一些非常明显的东西。我没想到需要设置任何东西zone.js来运行默认测试。我应该在哪里配置它?还是我在这里遗漏了其他东西,也许是我的components文件夹特有的东西?

typescript zonejs angular-cli angular angular-cli-v6

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

组件上的角度点击事件发送内部元素作为目标

我在 Angular 组件上有一个点击事件:

import { Component } from "@angular/core";

@Component({
  template: `
    <hello (click)="onClick($event)"></hello>
  `
})
export class AppComponent {
  onClick(e) {
    alert("Click on TAG: " + e.target.tagName);
  }
}
Run Code Online (Sandbox Code Playgroud)

在线查看演示:https : //stackblitz.com/edit/angular-ivy-zxmsnc?file=src%2Fapp%2Fapp.component.ts

为什么是event.target组件的内部元素而不是组件本身?

javascript angular

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

System.InvalidOperationException:在 SqlServer 提供程序清单中找不到存储类型“decimal(18,4)”

我正在按以下方式构建连接字符串(使用适当的连接参数值)。

var builder = new SqlConnectionStringBuilder
{
    PersistSecurityInfo = false,
    InitialCatalog = "mydatabase",
    UserID = "myuser",
    Password = "mydatabase",
    DataSource = "myserver"
};
var connectionString = builder.ConnectionString;
using (var db = Helper.MakeContext(connectionString)) {
    var carrier = db.Carriers.FirstOrDefault(); // fails here with error
    Console.WriteLine(carrier.Carrier);
}
Run Code Online (Sandbox Code Playgroud)

Helper 在不同的项目中

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using ApiForVivtrack3.Entities;
    
public static class Helper
{
    //public  string ConnectionString { get; set; }
    public static ApiDbContext MakeContext(string connectionString)
    {
        var db = new …
Run Code Online (Sandbox Code Playgroud)

ef-code-first

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

为什么 foreach 循环有效但 Linq 变体无效?

我想用枚举值填充 WinForms Combobox,但是当我尝试使用 Linq 进行此操作时,Combobox 中没有添加任何项目。但是,foreach 变体工作得很好。

我的林克:

Enum.GetNames(typeof(AgeCategory))
    .Select(x => cbCategory.Items.Add(x));
Run Code Online (Sandbox Code Playgroud)

我的foreach:

foreach (var category in Enum.GetNames(typeof(AgeCategory)))
{
    cbCategory.Items.Add(category);
}
Run Code Online (Sandbox Code Playgroud)

另外,如果您知道更好的方法来做到这一点,我愿意接受不同的解决方案。

c# linq foreach

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

如何清除ng-select选择

是否可以通过编程方式清除ng-select下拉列表的选择?我想要单击清除图标的等效行为,但是是以编程方式触发的。

ng-select下拉菜单的屏幕截图,其中带有清除图标的红色圆圈

我期待有一种clear()方法或类似的方法,但是文档化的API在这些方面没有任何内容。

这是我的下拉代码:

<ng-select class="ng-select-wrap"
           [searchFn]="multiTermSearch"
           [items]="calculationOptions"
           placeholder="Please select..."
           name="calculation"
           #calculationValue="ngModel"
           [(ngModel)]="selectedCalculation">
</ng-select>

Run Code Online (Sandbox Code Playgroud)

angular-ngselect angular

0
推荐指数
3
解决办法
2293
查看次数