小编And*_*ell的帖子

当构造函数具有参数时,使用Moq模拟对象

我有一个对象,我正在尝试使用moq进行模拟.对象的构造函数具有必需参数:

public class CustomerSyncEngine {
    public CustomerSyncEngine(ILoggingProvider loggingProvider, 
                              ICrmProvider crmProvider, 
                              ICacheProvider cacheProvider) { ... }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用moq的v3"setup"或v4"Mock.Of"语法为这个对象创建模拟但是无法解决这个...我正在尝试的一切都没有验证.这是我到目前为止所拥有的,但最后一行是给我一个真实的对象,而不是模拟.我这样做的原因是因为我想要验证的CustomerSyncEngine上有方法被调用...

// setup
var mockCrm = Mock.Of<ICrmProvider>(x => x.GetPickLists() == crmPickLists);
var mockCache = Mock.Of<ICacheProvider>(x => x.GetPickLists() == cachePickLists);
var mockLogger = Mock.Of<ILoggingProvider>();

// need to mock the following, not create a real class like this...
var syncEngine = new CustomerSyncEngine(mockLogger, mockCrm, mockCache);
Run Code Online (Sandbox Code Playgroud)

moq

82
推荐指数
2
解决办法
7万
查看次数

明确指定Express'"应用程序,请求,响应......的类型"

我正在努力更新一个简单的NodeJS + ExpressJS应用程序以使用TypeScript.我已经有了它的工作,但我正在添加一些额外的数据注释,以在Visual Studio和WebStorm中添加额外的类型检查和代码时自动完成/ IntelliSense.

我已经引用了最新的express.d.ts.我还创建了Express应用程序:

var app = express();
Run Code Online (Sandbox Code Playgroud)

一切正常......但是当我输入类似的内容时,我似乎无法弄清楚如何为app添加类型信息以获取自动完成帮助

app.get('/',function(req,res){});
Run Code Online (Sandbox Code Playgroud)

我尝试使用(和&)注释应用程序(和req&res)Express.Application,但这并没有解决.看一下类型定义,我对如何编写typedef与创建内部"e"引用感到困惑.......Request.Response

感到惊讶我找不到任何人要求和解决这个问题,因为express.d.ts typedef已针对ExpressJS 4.0进行了更新(之前我发现了对ExpressServer的引用,但现在还没有.

想法?

express typescript

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

新手试图使用Moq进行可枚举的方法

我试图看看Moq是否是我想在新项目中使用的东西,因为我使用的其他模拟框架正在挑战恕我直言.例如,我有一个方法:

IEnumerable<PickList> GetPickLists();
Run Code Online (Sandbox Code Playgroud)

我不确定我该怎么嘲笑这个...我尝试过类似的东西,但是我得到了恭维错误(我知道以下的Returns()不正确,但是无法弄清楚什么放在Return体中:

var mockCrm = new Mock<ICrmProvider>();
mockCrm.Setup<IEnumerable<PickList>>(foo => foo.GetPickLists())
              .Returns<IEnumerable<PickList>>({});
Run Code Online (Sandbox Code Playgroud)

此外,尝试模拟这两种方法:

CustomerSyncResult ApplyActions(IEnumerable<CustomerAction> actions);
IEnumerable<Customer> GetCustomers(IEnumerable<string> crmIDs, IEnumerable<string> emails);
Run Code Online (Sandbox Code Playgroud)

我知道我在问一个笼罩的问题,但是我有一段时间开始.下载中的CHM没有足够的样本供我使用,其中一些教程似乎使用过时的方法,也没有覆盖枚举,这对我来说很棘手:(

任何提示将非常感谢.

moq

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

添加换行符给Oh My ZSH主题

我正在尝试为我现有的Oh My ZSH主题添加换行符,但无法确定要添加的内容或应添加/更改的位置.有任何想法吗?

zsh oh-my-zsh

10
推荐指数
4
解决办法
4572
查看次数

EF 4.2,CodeFirst - 在Complext类型中的导航属性

我知道我可以通过将所有内容推送到单个实体而不是嵌套复杂类型(因为它们只是1-1映射)来解决这个问题,但我喜欢它在生成的OM中对属性进行分组的方式.

我有一个Customer实体,其中包含一个Complext类型"CrmData".CrmData实体具有复杂类型的地址.

public class Customer {
  [Required]
  public CrmSpecificData CrmData { get; set; }
}
[ComplexType]
public class CrmSpecificData {
  [MaxLength(40)]
  public string FirstName { get; set; }

  [MaxLength(80)]
  public string LastName { get; set; }

  public Address Address { get; set; }
}
[ComplexType]
public class Address {
  [MaxLength(150)]
  public string Address1 { get; set; }

  [MaxLength(150)]
  public string Address2 { get; set; }

  [MaxLength(100)]
  public string City { get; set; }

  [MaxLength(15)]
  public string PostalCode { get; set; …
Run Code Online (Sandbox Code Playgroud)

entity-framework code-first ef-code-first entity-framework-4.1

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

将数百万个文件从根 AZStorage Blob 复制到子文件夹

我有多个 Azure 存储 blob 容器,每个容器都有超过 100 万个 JSON 文件,包括根。无法使用(不会令人震惊),因此尝试使用数据工厂使用文件中的时间戳将它们移动到多个文件夹,以创建 YYYY-MM-DD/HH 文件夹设置为分区系统。但是我尝试过的每种方法都因超时/项目限制过多而失败。需要打开每个文件,获取时间戳,并使用时间戳数据将文件移动到动态路径。想法?

更新:我能够解决这个问题,但我不会称之为“答案”,所以我只会更新问题。为了创建较小的集合,我将管道参数化为接受文件名通配符。然后我创建了另一个使用 0-9,az 数组的管道,将其用作数据集上的参数。蛮力解决方法......假设必须有更好的解决方案,但这现在有效。

azure azure-blob-storage azure-data-factory-2

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

Durandal:从另一个访问一个视图模型

使用Durandal,我的应用程序中有两个视图模型,比如说vmCompanies和vmEmployees.我有两个视图,每个视图模型一个,在每个视图模型中,您可以看到所有公司和所有员工.

但是,当我加载我的员工时,他们在数据库中有一个ID,用于他们所雇用的公司.我想做的是以下伪:

  • 在vmEmployees中,获取对vmCompanies的引用
  • 如果vmCompanies已经初始化(我知道这是99%的时间),请参考它,这样我就可以使用像linq.js这样的东西找到这个员工工作的具体公司
  • 如果vmCompanies尚未初始化(也就是:已激活),请执行此操作

通过这种方式,我可以避免vmEmployees拥有自己的公司内部缓存的要求.到目前为止,我一直无法弄清楚Durandal如何查询并询问"给我这个已经加载的视图模型".它似乎在内部有这种情况,因为当我在视图之间导航时,它们被缓存而不是重新加载(与VM相同)......到目前为止还没有看到能做到的.

viewmodel single-page-application durandal

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

使用原型模式在ajax回调中访问'this'

我在使用'this'关键字时遇到了一些问题.我理解为什么以下不起作用,但无法弄清楚如何解决它...

//Namespace
var CPT = CPT || {};

//Constructor
CPT.Grid = function (hostElement, surlWeb) {
  this.hostElement = hostElement;
  this.surlWeb = surlWeb;
}

//Prototype
CPT.Grid.prototype = {

  init: function () {

    $.ajax({
      url: this.surlWeb,
      headers: { "accept": "application/json" },
      success: this.showItems
    });
  },

  showItems: function (data) {
    //do some work 

    // this is the error... no access to hostElement because 'this' is the AJAX call
    this.hostElement.html(items.join(''));
  }
}

function getProducts() {
  var grid = new CPT.Grid($("#displayDiv"), someUrl);
  grid.init();
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过没有单独的showItems函数来解决这个问题,但我想看看如何以另一种方式做到这一点.理想情况下,我想将对当前对象的引用传递给成功处理程序,但无法弄清楚如何做到这一点......

javascript prototype

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