2015-04-04 94 views
3

我确实使用程序包管理器控制台安装了Moq(安装程序包Moq -version 4.1.1309.1617 -projectname EssentialTools。测试)无法找到类型或名称空间名称'Moq'(您是否缺少使用指令或程序集引用?)

我的目标是.NET FRAMEWORK 4.5,(我尝试将其更改为4客户端配置文件),仍然有错误。我在“使用Moq”下出现错误。任何帮助,将不胜感激。谢谢

using EssentialTools.Models; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using Moq; 
using System.Linq; 

namespace EssentialTools.Tests 
{ 
[TestClass] 
public class UnitTest2 
{ 

    private Product[] products = { 
     new Product {Name = "Kayak", Category = "Watersports", Price = 275M}, 
     new Product {Name = "Lifejacket", Category = "Watersports", Price = 48.95M}, 
     new Product {Name = "Soccer ball", Category = "Soccer", Price = 19.50M}, 
     new Product {Name = "Corner flag", Category = "Soccer", Price = 34.95M} 
    }; 

    [TestMethod] 
    public void Sum_Products_Correctly() 
    { 
     // arrange 
     Mock<IDiscountHelper> mock = new Mock<IDiscountHelper>(); 
     mock.Setup(m => m.ApplyDiscount(It.IsAny<decimal>())) 
      .Returns<decimal>(total => total); 
     var target = new LinqValueCalculator(mock.Object); 

     // act 
     var result = target.ValueProducts(products); 

     // assert 
     Assert.AreEqual(products.Sum(e => e.Price), result); 
    } 

    private Product[] createProduct(decimal value) 
    { 
     return new[] { new Product { Price = value } }; 
    } 

    [TestMethod] 
    [ExpectedException(typeof(System.ArgumentOutOfRangeException))] 
    public void Pass_Through_Variable_Discounts() 
    { 
     // arrange 
     Mock<IDiscountHelper> mock = new Mock<IDiscountHelper>(); 
     mock.Setup(m => m.ApplyDiscount(It.IsAny<decimal>())) 
      .Returns<decimal>(total => total); 
     mock.Setup(m => m.ApplyDiscount(It.Is<decimal>(v => v == 0))) 
      .Throws<System.ArgumentOutOfRangeException>(); 
     mock.Setup(m => m.ApplyDiscount(It.Is<decimal>(v => v > 100))) 
      .Returns<decimal>(total => (total * 0.9M)); 
     mock.Setup(m => m.ApplyDiscount(It.IsInRange<decimal>(10, 100, 
      Range.Inclusive))).Returns<decimal>(total => total - 5); 
     var target = new LinqValueCalculator(mock.Object); 

     // act 
     decimal FiveDollarDiscount = target.ValueProducts(createProduct(5)); 
     decimal TenDollarDiscount = target.ValueProducts(createProduct(10)); 
     decimal FiftyDollarDiscount = target.ValueProducts(createProduct(50)); 
     decimal HundredDollarDiscount = target.ValueProducts(createProduct(100)); 
     decimal FiveHundredDollarDiscount = target.ValueProducts(createProduct(500)); 

     // assert 
     Assert.AreEqual(5, FiveDollarDiscount, "$5 Fail"); 
     Assert.AreEqual(5, TenDollarDiscount, "$10 Fail"); 
     Assert.AreEqual(45, FiftyDollarDiscount, "$50 Fail"); 
     Assert.AreEqual(95, HundredDollarDiscount, "$100 Fail"); 
     Assert.AreEqual(450, FiveHundredDollarDiscount, "$500 Fail"); 
     target.ValueProducts(createProduct(0)); 
    } 
} 
} 
+0

在参考文献列表中,是否有一个黄色三角形,Moq参考是? – 2015-04-04 01:53:21

+0

@BrianMains感谢您的评论。不,如果您在解决方案资源管理器中讨论引用 – user3508766 2015-04-04 01:57:50

+0

,那么在参考文献中没有看到黄色三角形。还要确保Moq在bin文件夹中。 – 2015-04-04 02:01:23

回答

3

右键单击引用并从已安装的包文件夹中添加Moq。希望能帮助到你!

相关问题