Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 教程&x2013;Net中的BDD和依赖项注入(4)_C#_.net_Visual Studio 2012 - Fatal编程技术网

C# 教程&x2013;Net中的BDD和依赖项注入(4)

C# 教程&x2013;Net中的BDD和依赖项注入(4),c#,.net,visual-studio-2012,C#,.net,Visual Studio 2012,请帮助我删除粗体字的模拟错误 错误1找不到类型或命名空间名称“Mock”(是吗 缺少using指令或程序集 参考?)C:\Users\MOB140003208\documents\visualstudio 2012\Projects\RockPaperScissors\RockPaperScissorsTest\Tests\GameTest.cs 65 34 RockPaperScissorsTest 错误2找不到类型或命名空间名称“Mock”(是否为空) 缺少using指令或程序集 参考?)C

请帮助我删除粗体字的模拟错误

错误1找不到类型或命名空间名称“Mock”(是吗 缺少using指令或程序集 参考?)C:\Users\MOB140003208\documents\visualstudio 2012\Projects\RockPaperScissors\RockPaperScissorsTest\Tests\GameTest.cs 65 34 RockPaperScissorsTest

错误2找不到类型或命名空间名称“Mock”(是否为空) 缺少using指令或程序集 参考?)C:\Users\MOB140003208\documents\visualstudio 2012\Projects\RockPaperScissors\RockPaperScissorsTest\Tests\GameTest.cs 77 34 RockPaperScissorsTest

错误3找不到类型或命名空间名称“Mock”(是吗 缺少using指令或程序集 参考?)C:\Users\MOB140003208\documents\visualstudio 2012\Projects\RockPaperScissors\RockPaperScissorsTest\Tests\GameTest.cs 89 34 RockPaperScissorsTest

使用系统;
使用系统文本;
使用System.Collections.Generic;
使用Microsoft.VisualStudio.TestTools.UnitTesting;
使用剪刀;
名称空间RockPaperScissorsTest.测试
{
/// 
///GameTest的摘要说明
/// 
[测试类]
公共类游戏测试
{
公共游戏测试()
{
//
//TODO:在此处添加构造函数逻辑
//
}
私有TestContext testContextInstance;
/// 
///获取或设置提供
///有关当前测试运行的信息和功能。
///
公共TestContext TestContext
{
得到
{
返回testContextInstance;
}
设置
{
testContextInstance=值;
}
}
#区域附加测试属性
//
//在编写测试时,可以使用以下附加属性:
//
//在运行类中的第一个测试之前,请使用ClassInitialize运行代码
//[ClassInitialize()]
//公共静态void MyClassInitialize(TestContext TestContext){}
//
//在类中的所有测试都已运行后,使用ClassCleanup运行代码
//[ClassCleanup()]
//公共静态void MyClassCleanup(){}
//
//在运行每个测试之前,使用TestInitialize运行代码
//[测试初始化()]
//public void MyTestInitialize(){}
//
//使用TestCleanup在每个测试运行后运行代码
//[TestCleanup()]
//public void MyTestCleanup(){}
//
#端区
[测试方法]
public void ReturnsCorrectMessageIfPlayerWins()
{
var engineMock=new**Mock**();
engineMock.Setup(de=>de.Result(Move.Rock,Move.Paper)).Returns(GameResult.PlayerWins);
var game=新游戏(engineMock.Object);
game.PlayerMove=“纸张”;
var result=game.result();
engineMock.VerifyAll();
AreEqual(“玩家赢了!”,结果);
}
[测试方法]
public void ReturnsCorrectMessageIfComputerWins()
{
var engineMock=new**Mock**();
engineMock.Setup(de=>de.Result(Move.Rock,Move.Scissors)).Returns(GameResult.ComputerWins);
var game=新游戏(engineMock.Object);
game.PlayerMove=“剪刀”;
var result=game.result();
engineMock.VerifyAll();
AreEqual(“计算机赢了!”,结果);
}
[测试方法]
[ExpectedException(typeof(ArgumentNullException))]
public void ThrowsErrorIfPlayerMoveIsNotSet()
{
var engineMock=new**Mock**();
var game=新游戏(engineMock.Object);
游戏结果();
}
}
}

是否缺少using指令或程序集引用

是的,你是。您需要添加对包含
Mock
类型的程序集的引用。您还需要添加
using
语句,以便能够使用
Mock
类型,而不必在前面添加名称空间


因此,请确保您有一个对
Moq
程序集的引用(最好使用NuGet),并确保使用Moq添加
位于源代码顶部。

您的错误消息说明了这一点:您试图使用Moq(我猜),但没有完全验证它的名称-因此在文件顶部添加
using
(或完全验证),并确保您已设置了Moq的引用(我猜您将使用Nuget)
using System;
using System.Text;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using RockPaperScissors;

namespace RockPaperScissorsTest.Tests
{
/// <summary>
/// Summary description for GameTest
/// </summary>
[TestClass]
public class GameTest
{
    public GameTest()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    private TestContext testContextInstance;

    /// <summary>
    ///Gets or sets the test context which provides
    ///information about and functionality for the current test run.
    ///</summary>
    public TestContext TestContext
    {
        get
        {
            return testContextInstance;
        }
        set
        {
            testContextInstance = value;
        }
    }

    #region Additional test attributes
    //
    // You can use the following additional attributes as you write your tests:
    //
    // Use ClassInitialize to run code before running the first test in the class
    // [ClassInitialize()]
    // public static void MyClassInitialize(TestContext testContext) { }
    //
    // Use ClassCleanup to run code after all tests in a class have run
    // [ClassCleanup()]
    // public static void MyClassCleanup() { }
    //
    // Use TestInitialize to run code before running each test 
    // [TestInitialize()]
    // public void MyTestInitialize() { }
    //
    // Use TestCleanup to run code after each test has run
    // [TestCleanup()]
    // public void MyTestCleanup() { }
    //
    #endregion

    [TestMethod]
    public void ReturnsCorrectMessageIfPlayerWins()
    {
        var engineMock = new **Mock**();
        engineMock.Setup(de => de.Result(Move.Rock, Move.Paper)).Returns(GameResult.PlayerWins);
        var game = new Game(engineMock.Object);
        game.PlayerMove = "Paper";
        var result = game.Result();
        engineMock.VerifyAll();
        Assert.AreEqual("Player Wins!", result);
    }

    [TestMethod]
    public void ReturnsCorrectMessageIfComputerWins()
    {
        var engineMock = new **Mock**();
        engineMock.Setup(de => de.Result(Move.Rock, Move.Scissors)).Returns(GameResult.ComputerWins);
        var game = new Game(engineMock.Object);
        game.PlayerMove = "Scissors";
        var result = game.Result();
        engineMock.VerifyAll();
        Assert.AreEqual("Computer Wins!", result);
    }
    [TestMethod]
    [ExpectedException(typeof(ArgumentNullException))]
    public void ThrowsErrorIfPlayerMoveIsNotSet()
    {
        var engineMock = new **Mock**();
        var game = new Game(engineMock.Object);
        game.Result();
    }
}