So, I'm attempting TDD in a small try-out project... I have written a test for a Player's Shoot() method, and now I want to test whether the bullet has a certain speed upon its creation: Code (CSharp): using Assets.Scripts; using NUnit.Framework; namespace TDDShootingGame.Tests { [TestFixture] class BulletTests { private BulletPoolManager bulletPoolManager; private Player player; [SetUp] public void SetUp() { bulletPoolManager = new BulletPoolManager(); player = new Player(bulletPoolManager); } [Test] public void SetSpeed_UponBulletCreation_BulletSpeedEquals1() { //Arrange... not necessary //Act player.Shoot(); //Assert that the fired bullet has a specific speed Assert.AreEqual(1, bulletPoolManager.BulletList[0].Speed); //Accessing a Bullet object, which relies UnityEngine... mock it? } } } However, this gives me an 'Ecall methods should be package into a system module' error in Nunit. This is because the Bullet object, accessed in "bulletPoolManager.BulletList[0]", relies on the UnityEngine in order to instantiate a Bullet prefab in the game scene: Code (CSharp): using UnityEngine; namespace Assets.Scripts { public class Bullet { private float speed; public float Speed { get { return speed; } } public Bullet() { Object.Instantiate(Resources.Load("Prefabs/Bullet"), Vector3.zero, Quaternion.identity); } private void SetSpeed(float value) { speed = value; } } } I thought the only way to test the Bullet's speed was to mock Bullet. A fake Bullet that does the exact same thing, except Instantiate the prefab. Is this the right approach, or are there major design issues here? If anyone could educate me, I'd be grateful.